Skip to content

Releases: AppLayerLabs/bdk-cpp

OrbiterSDK-cpp v0.2.0

05 Feb 21:16
9f4e935
Compare
Choose a tag to compare

We're thrilled to announce OrbiterSDK 0.2.0, a leap forward packed with numerous new features and substantial upgrades. Experience a remarkable 100% increase in contract execution speed and more. Below is a detailed list of the most significant enhancements:

  • SDKTestSuite: OrbiterSDK now integrates its own testing suite, revolutionizing how developers test your contracts. This suite offers a straightforward, user-friendly interface, akin to Hardhat or Truffle from EVM, streamlining your testing process like never before.

  • Full Events Support for Contracts: Elevate your dApps to new heights with the ability to effortlessly emit and listen to events from your contracts. Compatible with any web3 frontend library, such as ethers.js or web3.js, this feature promises a seamless integration into your existing workflow.

  • Safe Tuple: Introducing the versatility of struct/tuple usage within your contracts. Now, store a myriad of values under a single variable, optimizing both space and efficiency.

  • ABI Refactor to Templates: We've overhauled the ABI, now utilizing templates for a more elegant syntax and enhanced performance. This refinement promises a smoother development experience.

  • Full Tuple/Struct Support for Contracts: Say goodbye to the limitations of previous versions. OrbiterSDK now fully supports recursive usage of tuples and structs as parameters and return types in your contract functions, bypassing the need for manual ABI encoding with BytesEncoded (Now deprecated).

  • Genesis in Options: Customize your chain's inception with ease. The settings file now includes options for setting the chain's genesis state – from the genesis block to initial validators, chain ownership, and starting balances.

  • Improved ContractManager Logic: We've restructured the ContractManager for greater clarity and efficiency. It now comprises multiple classes – ContractManager for contract access and storage, ContractCallLogger for logging and handling contract calls, and ContractFactory for creating new contracts. All these functionalities are seamlessly integrated within the ContractManager framework.

  • Support for All uint Types: Our platform now supports a wider range of uint*_t and int*_t types in contracts, expanding beyond the previously available uint256_t and int256_t.

  • Support for Enum on ABI: We've now incorporated support for enum types in the ABI, enabling you to define and utilize enums in your contract's function parameters and return types, broadening the scope of your contract's functionality.

  • Better Organization for Contract Template Files: The contract template files have been reorganized for enhanced clarity and accessibility. All templates are now conveniently located in the contract/templates folder.

  • ERC721 Template: Introducing a new ERC721 contract template within our contract templates, facilitating the creation of your own NFTs with ease and efficiency.

  • Hash Cache on Transactions: Transactions now feature a hash cache, significantly speeding up access to the transaction hash and optimizing overall transaction processing.

In addition to these major updates, we've implemented numerous bug fixes and performance enhancements.

OrbiterSDK-cpp v0.1.2

07 Aug 16:09
5bb3a5e
Compare
Choose a tag to compare

Introducing OrbiterSDK v0.1.2 - a leap forward in efficiency and flexibility. Here's what's new:

  • New Logger Class: We've developed a high-performing logger class to address the issue of extended mutex wait times associated with I/O operations in multithreaded environments. This logger leverages a queue-based system to manage log data, minimizing I/O operations and enhancing overall system performance.

  • Enhanced Contract Function Arguments: We've broadened the types of arguments allowed in contract functions. Prior to this update, all arguments had to be uint256. Now, we support all uint types (like uint8, uint16, uint32, etc.), providing more flexibility in contract function definitions.

  • DexV2 Contracts: We've converted UniswapV2 contracts from Solidity to C++ on a 1:1 basis. The result? An astonishing 50x speed increase in token-to-token swaps.

We appreciate your patience and support as we continue to refine and enhance the OrbiterSDK.

OrbiterSDK-cpp v0.1.1

25 Jul 19:55
63a91f9
Compare
Choose a tag to compare

We're thrilled to announce the launch of the OrbiterSDK version 0.1.1. This hotfix release focuses on ironing out specific issues that were previously impacting interactions with OrbiterSDK through web3 clients such as MetaMask, ethers.js, and web3.js.

Version 0.1.1 addresses and rectifies two primary bugs:

  • A decoding issue within the eth_call and eth_estimateGas RPC calls has been identified and resolved, ensuring more seamless and reliable data interactions.

  • The ContractManager was previously throwing errors using non-UTF8 characters. This behaviour has been corrected to improve error reporting and mitigate any potential disruptions.

We appreciate your patience and support as we continue to refine and enhance the OrbiterSDK.

OrbiterSDK-cpp v0.1.0

19 Jul 16:46
f82d0ad
Compare
Choose a tag to compare

We are thrilled to announce the release of OrbiterSDK 0.1.0, a significant milestone that propels our journey forward. This update encompasses an array of enhancements, covering exciting new features, essential bug fixes, and invaluable improvements in the user and developer experience. Here are some of the notable changes in this release:

  • Auto-Registration through Reflections on Dynamic Contracts
    Taking advantage of C++ templates and reflection, we've automated the registration of functions within Dynamic Contracts. This eliminates the previous requirement for developers to manually decode transaction data and call the corresponding function, streamlining the development process.

  • Simplified Contract Management through Reflection
    With the goal of further simplifying the development process, we've applied similar reflection techniques to the Contract Manager. This update removes the previously error-prone step of manually registering Dynamic Contracts within the Contract Manager, reducing overhead and complexity in creating a contract.

  • Migration from std::string to std::vector
    To improve code clarity and avoid confusion, we've transitioned from using std::string for storing various data types (like bytes, literal strings, hex, etc.) to employing specialized types - Bytes, BytesArr, and BytesArrView. The previous approach was a legacy from the protobuf (AvalancheGo dependency) which used std::string as its byte container. This update enhances understandability and simplifies debugging for developers.

  • Refactor of P2P Protocol
    In a significant performance boost, we've completely overhauled our P2P protocol from Websockets to Raw TCP Sockets. This transformation has significantly increased the performance of OrbiterSDK, making it more efficient and robust.

  • Introduction of Proper Contract Return Types
    In our continuous efforts to improve the developer experience, we've refined contract functions to return proper types when called from other contracts. This refinement brings a more intuitive and manageable development experience, facilitating smoother interactions with contract functions.

In conclusion, this release is a major step forward in our commitment to providing a user-friendly, efficient, and high-performing environment for blockchain development. We encourage all developers to update to this new release and enjoy the benefits of these improvements.

Stay tuned for further updates as we continue to refine and expand OrbiterSDK!

OrbiterSDK-cpp v0.0.3

07 Jun 12:22
Compare
Choose a tag to compare

OrbiterSDK-cpp v0.0.3 is a minor release that introduces several enhancements and bug fixes, improving performance, compatibility, and user experience.

New Additions and Enhancements:

  • Docker Environment Setup:
    Docker environment setup has been added, making it easier to run the OrbiterSDK-cpp on any Linux, Windows, or MacOS machine. This addition increases the accessibility and ease of setup for the OrbiterSDK-cpp.

  • Database Replacement:
    RocksDB has been replaced with SpeeDB for performance improvements. This change is expected to enhance the speed and efficiency of data operations within the SDK.

  • Ninja Build System Compatibility:
    Ninja is now a compatible build system with OrbiterSDK-cpp. This compatibility widens the range of options for developers during the build process.

  • ABI Refactoring:
    The Application Binary Interface (ABI) has been refactored to use raw bytes instead of converting to Hex. This change optimizes data handling and storage efficiency.

Bug Fixes:

  • SafeUnorderedMap Bug:
    An issue with SafeUnorderedMap has been fixed, contributing to improved stability and functionality of the OrbiterSDK-cpp.

For a complete list of the changes, please refer to the OrbiterSDK-cpp v0.0.3 release milestone on GitHub.

We continue to appreciate your feedback via GitHub's issue tracker to help us in our constant efforts to improve the OrbiterSDK-cpp.

OrbiterSDK-cpp v0.0.2

12 May 23:10
Compare
Choose a tag to compare

OrbiterSDK-cpp v0.0.2 is a maintenance release, primarily focusing on fixing critical bugs related to P2P networking discovered in the previous version.

Bug Fixes:

  • P2P Deadlock:
    An issue causing the software to deadlock and fail to set up a network when compiled with debug flags has been addressed. This bug fix enhances the stability and robustness of the P2P networking functionality in the OrbiterSDK-cpp.

  • High CPU Usage:
    This version also resolves an issue that led to 100% CPU usage. The bug was traced back to the discovery worker, which is responsible for discovering other nodes within the network. The fix significantly optimizes CPU usage, contributing to a more efficient operation of the platform.

Minor Changes:

This release also includes some minor changes and improvements for better overall performance and usability of the OrbiterSDK-cpp.

As always, we encourage users to report any issues or suggestions through GitHub's issue tracker. Your feedback is instrumental in our continuous efforts to improve the project.

OrbiterSDK-cpp v0.0.1

22 Apr 22:10
Compare
Choose a tag to compare

OrbiterSDK-cpp v0.0.1 is the first publicly released testnet of the project, introducing a comprehensive set of features for blockchain development and testing.

Features

  • Full blockchain creation with EVM compatibility over web3 clients (such as etherJS and web3js)
  • Dynamic Contract creation (similar to Solidity contract)
  • Protocol Contract creation
  • Local testnet network creation with multiple nodes
  • rdPoS consensus mechanism
  • P2P Networking
  • Additional features and improvements

Detailed Information

  • Full blockchain creation with EVM compatibility:
    This version allows users to create a full blockchain with Ethereum Virtual Machine (EVM) compatibility for front end tools. It is compatible with web3 clients like etherJS and web3js.

  • Dynamic Contract creation:
    Dynamic Contracts allows developers to create smart contracts similar to those created using the Solidity programming language, they have automatic protection against transaction reversion and other features

  • Protocol Contract creation:
    Users can create protocol contracts that goes beyond processing only through a transaction, such contracts can enable increasingly complex features, such as parallelism, looping, and more.

  • Local testnet network creation:
    Developers can create a local testnet network with multiple nodes for testing purposes.

  • rdPoS consensus mechanism:
    The release implements the random deterministic Proof of Stake (rdPoS) consensus mechanism for enhanced security and performance.

  • P2P Networking:
    OrbiterSDK-cpp v0.0.1 supports a modifiable Peer-to-Peer (P2P) networking, enabling direct communication between nodes in the network.

Please note that this is the first testnet version of OrbiterSDK-cpp, and it might have some undiscovered issues. We encourage users to report any problems or suggestions through GitHub's issue tracker. Your feedback is valuable in improving the project.