<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by EQ Lab on Medium]]></title>
        <description><![CDATA[Stories by EQ Lab on Medium]]></description>
        <link>https://medium.com/@eqlab?source=rss-8aa775d98642------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*lWjb4VaXTLzwuK0emBGSdA.png</url>
            <title>Stories by EQ Lab on Medium</title>
            <link>https://medium.com/@eqlab?source=rss-8aa775d98642------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 07 Apr 2026 02:27:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@eqlab/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Fighting the Good Fight: Wading Through Intrigue and Politics to Improve the Polkadot Ecosystem]]></title>
            <link>https://eqlab.medium.com/fighting-the-good-fight-wading-through-intrigue-and-politics-to-improve-the-polkadot-ecosystem-b3040d4505b7?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/b3040d4505b7</guid>
            <category><![CDATA[defi]]></category>
            <category><![CDATA[ledger]]></category>
            <category><![CDATA[parachain]]></category>
            <category><![CDATA[equilibrium]]></category>
            <category><![CDATA[polkadot]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Wed, 21 Jun 2023 15:59:33 GMT</pubDate>
            <atom:updated>2023-06-21T16:00:30.543Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GqRZ_USyphv9_FWqQX3TCg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*STI1ygpELEQj2j4i" /></figure><p>Ever since the Equilibrium team has come up with the <a href="https://polkadot.polkassembly.io/post/1795">Unified Ledger App proposition</a> for the Ecosystem, the proposal itself has received a lot of attention and positive feedback both from within and from outside of the ecosystem. It continues gaining traction after we came up with the actual referenda which you can <a href="https://polkadot.polkassembly.io/referenda/16">find and support here</a>.</p><p>The aim of this post is to re-iterate the main ideas and advantages behind the proposal, pinpoint why it is of great benefit to the parachain projects, and encourage an open discussion about the future prospects of the app that should ultimately serve all of the ecosystem at acceptable costs.</p><h4>Motivation</h4><p>There should be one universal Ledger app that will work with all parachains. We see the following problems of creating separate Ledger apps for different parachains:</p><ol><li>The Ledger team is overwhelmed with work and explicitly asks to curb the number of apps they need to support from the ecosystem, as well as limit the frequency of the app updates, making them no more than once per quarter.</li><li>Unique derivation path for each app (a unique account for each relay chain and parachain). Which leads to a number of problems:</li></ol><ul><li>The inability to participate in a crowdloan with a Ledger with guaranteed access to its rewards on a parachain without exporting mnemonics to less secure environments (for example, an extension, a mobile application). Most likely, a new project that participates in the crowdloan will not have its app built for a long time, because of which users will have to wait and get a negative experience from the entire ecosystem.</li><li>Most applications do not have derivation path selection functionality. So users, who transfer tokens from Kusama to Kusama-based parachain, for example, have their account changed and lose access to their tokens. The entire flow is not directly obvious to the average user (need to export mnemonic with correct derivation path).</li><li>Even if developers of parachain/relay chain applications will include functionality for selecting derivation paths in their Ledger applications, this will cause all applications to need to upgrade to support new parachains when they emerge. The alternative is for users to set the derivation path manually, which is complicated for the average user and doesn’t simplify the already cumbersome Polkadot user experience.</li></ul><p>3. The Ledger app works as a full-scale decoder, where pallet numbers and their respective methods are hard-coded. This leads to the following problems:</p><ul><li>Some transactions become unavailable after the runtime upgrade if there are changes to pallet indices and/or changes to extrinsic types.</li><li>These problems in conjunction with slow Ledger support response lead to the fact that users lose access to their assets for a prolonged period of time</li></ul><h4>Proposed solution</h4><p>Abandon call data decoding on the device (similar to EVM-compatible apps).</p><p>The main reason for the necessity to make a distinct Ledger app for each parachain is the need to decode the call data of every extrinsic.</p><p>Ethereum Ledger app, for example, never decodes transactions, one exception being an ERC-20 transfer. That is, the user checks data in the metamask wallet, for example, and approves it on a Ledger.</p><p>There are several differences with substrate parachains compared to standard smart contract chains, and it’s not just frequent upgrades:</p><ol><li>Large transactions that are difficult to validate, even on a large screen.</li><li>Frequent runtime upgrades.</li><li>Transactions that are difficult/impossible for the average user to understand, such as XCM or ORML (excellent developments but designed to be as general as possible for various projects to use).</li></ol><p>However, there is a major advantage to the substrate technology — we can change and adapt it to make it more user-friendly. We have a long-term vision of achieving this, but in the meantime, we want to help our clients and clients of other parachains access their assets as quickly as possible.</p><p>Our solution solves all three of the above problems. For now, this solution works only for balance pallets, but it supports all types of balances and effectively covers the majority of on-chain transactions in Polkadot. Also, we’re not just adding metadata for each parachain; we’re transforming the transaction into human-readable text for each parachain (sometimes different approaches are needed for the same pallet).</p><h4>Security of the proposed solution</h4><p>We’ve seen quite a lot of debates on the security of our approach. Most of our opponents refer to insecure blind signing. But it has become an industry standard for EVM (maybe unfortunately, but it’s the fact). Furthermore, as said above, the most common transactions (asset transfers) will be subject to clear sign and the scope of clear signed transactions will be expanding as new app developments kick in. Also, we’ve been in constant communication with the Ledger team to ensure our solution complies with their security standards.</p><p>Let’s summarize why the proposed solution actually secure:</p><ol><li>As mentioned earlier, we built the application based on EVM, and our security complies with widely spread EVM standards.</li><li>The application’s architecture will allow the future addition of processing new commonly used transaction types, such as governance or staking.</li><li>The hash verification process is not ultimately secure in the same way the verification of large and complex transactions is (more on that below in the concerns section). We have a clear vision of how to modify our approach in striving to make the app more secure and user-friendly (details on this are below as well)</li></ol><p>Lastly, the idea for this application was not born out of a desire to obtain a piece of the treasury but out of the necessity of having this application for our parachain and other parachains in our ecosystem. This is evident from the numerous comments and feedback we received while pursuing the common app goal.</p><h4>Exact Implementation</h4><p>It is <strong>very</strong> important to re-iterate that the exact implementation of the proposed app will work <strong>identically</strong> to the way Ledger apps work in Ethereum:</p><ol><li>Most common transactions such as Balance (and other asset operations) will be supported in the clear sign mode. See this <a href="https://docs.google.com/spreadsheets/d/1_1Fgm-vA9SUvZ_kfFkuCeAqZ7VmUnQextJz1lQZublI/edit#gid=0">spreadsheet</a> for the breakdown of the different asset modules we’re planning to support.</li><li>Blind sign mode is something that the user has to turn on manually on the device before he will have the ability to use it.</li><li>Display the hash of the call data both in the extension/mobile application and on the Ledger device.</li></ol><h4>Communication with the Ledger Team</h4><p>Having said that, we’ve been in constant contact with the Ledger team on the subject, and here’s the recap of the latest call and the questions that have been discussed:</p><ol><li><strong>Problem with multiple derivation paths:</strong> The proposed app will automatically select the needed derivation path between Polkadot and Kusama relay chains, depending on where the supported parachain is.</li><li><strong>Users should not blindly sign by default:</strong> The app will work the same way as EVM-based apps: users will have to manually turn on the hash signing option on the device themselves.</li><li><strong>Frequent app updates are time-consuming and not optimal, how can we avoid that?</strong> This is what we as an ecosystem need to sort out, from our end, we proposed to make updates no more frequent than once per quarter.</li><li><strong>If we manage app updates once per quarter, can we guarantee a clear sign when the app is not updated?</strong> No, we can’t, so those parachains who have implemented some breaking changes won’t work in the clear sign mode but still will have a blind sign functionality available. Yet these updates are quite seldom in our experience and we will monitor the main modules/pallets for the updates.</li><li><strong>It’s up to the ecosystem to decide on how to move forward with the app and what other common transactions to support for the clear sign mode:</strong> Indeed, this is the reason we’ve created a telegram group with multiple parachain representatives and have been vocal about our propositions during parachain round table calls and in discussions with Parity.</li></ol><h4>Addressing objections and concerns</h4><p>We’ve received numerous Polkassembly comments and posts related to the proposed solution and would love to address them all here in one place. We invite the Zondax team, Parity, and Ledger representatives to comment.</p><ol><li><strong>Security concern:</strong> Probably the most significant one we’ve received, which can be formulated like this:</li></ol><p><strong>Q: </strong><em>How do you verify that what you are signing is actually what the hot wallet shows you? This is impossible and therefore totally insecure.</em></p><p><strong>A:</strong> The concerns associated with signing hashes are usually explained using the example of simple transactions, but let’s look at <a href="https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fequilibrium-rpc.dwellir.com#/extrinsics/decode/0x2b0001010100e11f02100004000000000b00407a10f35a13000000000b00203d88792d000d0004000000000b00203d88792d04000101004ea2cbab9890661d2405b86600f0ccd95ff1f7156c864ae37f3ee673d88ea5350d0100040001006d1f">the example of an XCM transaction</a>, which is the main feature of Polkadot parachains.</p><ul><li>The size of the transaction — it is almost impossible to validate it on the Ledger device, moreover the device itself frequently freezes when presented with a transaction of such size</li><li>Arguments and methods that are incomprehensible to the user</li><li>Recipient address in public key format =&gt; You need to use third-party applications for validation</li><li>The transaction may appear in the encoded format of the recipient’s chain =&gt; you need to use third-party applications for validation</li></ul><p><strong>To check such a transaction user must use 3rd party instruments to validate it, raising all the same security concerns as with the hash signing.</strong> Hard to imagine any person in his right mind doing this.</p><p>We already talked about possible future approaches to the issue of clear/blind signing we would like to discuss more with the community and Parity:</p><p><strong>The first approach</strong> is to change the SignedPayload struct to create a human-readable string from extrinsic, so the users will sign a string, not a byte array. This requires major changes to be made in the substrate framework and this process can take a lot of time.</p><p><strong>The second approach</strong> is to add a new SignedExtension, and double sign the transaction (byte array and human-readable text), it will add more data to extrinsic and will increase transaction validation times, yet it can be implemented without any modifications to the substrate framework. Any parachain can support the app by adding this SignedExtension. SignedExtension can support default trx. signing for backward compatibility.</p><p>We would love to hear community and expert thoughts on the above and Invite Parity, Parachains, and the Zondax team to further discussion.</p><p>2.<strong> Zondax claims: </strong>The quote:</p><p><strong>Q:</strong> <em>“We are shocked that the development plan seems to bluntly claim features and activities that already exist and have been available for a long time”</em></p><p><strong>A:</strong> We want to build a universal Ledger app that will support multiple parachains. We ask you to carefully re-read our proposal to clearly understand the exact activities for which we’re requesting the funding. To be specific, funding is required to enable clear signing for all available balance pallets and other developments that require a lot of effort.</p><p>There are several issues with Zondax’s approach as we see them:</p><ol><li>Zondax APPs currently support only 4 main chains: Polkadot, Kusama, Statemine, and Statemint.</li><li>In order to have Ledger support, Zondax requires each parachain to sign up for their services with no transparency about costs.</li><li>Zondax’s approach is not universal, doesn’t serve ecosystem interests, and doesn’t provide a universal parachain app in a timely manner. The discussion around our solution has been going on for 6 months plus and we still haven’t moved in the practical direction.</li><li>There are concerns regarding the cost of the app and its support for the Polkadot treasury. And we believe Zondax should be more transparent in their claims of the audit and support costs.</li><li>We have never spoken out against Zondax’s solution, and it is very strange for us to see so much negativity coming toward us in recent days. We believe that Zondax’s solution for Polkadot and Kusama should remain in place at least until a better solution is devised.</li></ol><p>On the other hand, grants and open source are operating in such a way that if any team can create a better solution, they can compete for funding.</p><p>Spending $700k of treasury funds just for support of Zondax’s solution for 4 parachains seems unreasonably expensive to us. Additionally, the entire community would benefit if there was more disclosure about the proposed audit costs and the companies that will be doing the audit.</p><p>Finally, we have always stated and continue to say that our solution is the first step toward the <em>right</em> ledger application, and if we as a community can ultimately figure out how to make it better, we will gladly support any such initiative.</p><p><strong>Express your opinion on our initiative and support us </strong><a href="https://polkadot.polkassembly.io/referenda/16"><strong>here</strong></a><strong>!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b3040d4505b7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Maximizing Performance: Optimization Techniques for Substrate Blockchains]]></title>
            <link>https://eqlab.medium.com/maximizing-performance-optimization-techniques-for-substrate-blockchains-f5552f8f917b?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/f5552f8f917b</guid>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[substrate]]></category>
            <category><![CDATA[blockchain-software]]></category>
            <category><![CDATA[substrate-blockchain]]></category>
            <category><![CDATA[eqlab]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Fri, 16 Jun 2023 16:24:36 GMT</pubDate>
            <atom:updated>2023-06-16T16:24:36.133Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IwOBoYE_5iIipI2N8H_D2g.png" /></figure><p>In the decentralized world, optimization is crucial to enhance the efficiency and scalability of various systems. From distributed computing to network protocols, we continually strive to maximize performance and improve user experiences. The blockchain, with its promise of transparent, secure, and decentralized transactions, is no exception. In this article, we’ll analyze optimization techniques tailored for Substrate blockchains, shedding light on practical tips to elevate the performance of these innovative platforms.</p><p>Before we explore the intricacies of optimization in the blockchain space, let us first establish its significance in the broader context of decentralization.</p><h4>Why We Optimize Systems</h4><p>Optimization empowers us to streamline processes, minimize resource consumption, and increase system efficiency. It enables us to overcome challenges in scalability, latency, and transaction throughput. Through efficient algorithms, leveraging parallel processing, and optimizing data structures, we can realize the true potential of decentralized systems.</p><p>Transitioning our focus to Substrate blockchains, we unravel unique characteristics and challenges they present to us. As a modular framework for building blockchain solutions, Substrate provides a rich set of tools and functionalities. However, achieving optimal performance on Substrate blockchains requires a deep understanding of the underlying technology and thoughtful consideration of design choices. At the end of the day, a faster blockchain means a better product and more possible design choices.</p><p>Armed with this understanding, we embark on a practical journey, presenting a range of optimization techniques tailored for Substrate blockchains. By optimizing storage and implementing caching strategies, we provide actionable insights to improve the performance and responsiveness of Substrate-based networks.</p><h4>Approaches to Optimization in a Centralized World</h4><p>There are several approaches to optimization in the centralized world. Let’s explore these strategies in more detail:</p><ol><li>Scaling: Scaling involves expanding the system’s capacity to handle a larger transaction volume. There are two main scaling techniques:</li></ol><ul><li>Horizontal Scaling: This approach involves adding extra servers to the network, effectively distributing the transaction load among multiple nodes. We can accommodate a growing number of users and transactions with horizontal scaling.</li><li>Vertical Scaling: Vertical scaling focuses on enhancing the capabilities of existing servers by upgrading hardware components such as CPU, memory, or storage, allowing us to improve performance by increasing available computational resources.</li></ul><p>2. Choosing the Best Instruments: Selecting a programming language, databases, and message queues like Rabbit MQ affects the efficiency of applications. Opting for technologies well-suited to the project enables us to improve performance and streamline development.</p><p>3. Parallelization and Asynchrony: Leveraging parallel processing and asynchronous programming techniques allows tasks to be executed concurrently in a multithreaded environment, enhancing overall efficiency.</p><p>4. Database Optimization: Optimizing the database architecture and configuration is essential for efficient data storage and retrieval. We can reduce latency and enhance query processing speed through techniques such as indexing, sharding, and data compression.</p><p>5. Code Optimization: Choosing the most effective algorithms and data structures for implementing various functionalities within the application is crucial for streamlined functionality. Optimized code enhances the efficiency and responsiveness of the system, resulting in improved overall performance.</p><p>6. Caching Frequently Used Data and Query Results: We avoid redundant computations and minimize the load by storing frequently used data in a cache.</p><p>Incorporating these optimization techniques into the development process enhances performance, scalability, and user experience. Leveraging the power of optimization, we meet market demands by delivering reliable systems capable of scaling up with a growing market.</p><p>Having understood the streamlining options in centralized systems, let’s explore how we can improve blockchain performance for Substrate-based platforms.</p><h4>Optimizing Substrate Development for Blockchain Performance</h4><p>When optimizing Substrate development, it’s crucial to understand the differentiating factors between Substrate and traditional backend systems. A significant distinction is the access to storage speeds.</p><p>In traditional development, memory calls are often made with little consideration for optimization. However, in Substrate, every memory call is expensive. Additionally, Substrate imposes certain limitations on the choice of tools, parallelism, and caching options.</p><p>Below is a table explaining the theoretical approaches to optimize blockchain performance within the context of Substrate:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/941/1*ghftNoRvMP4jWptpy_FvXw.png" /></figure><p>Although certain limitations exist, we can use caching management and reducing storage calls to achieve notable performance improvement within the Substrate framework.</p><p>So, from these theoretical examples, what are the practical steps we can take to optimize Substrate blockchains?</p><h4>Practical Approaches for Optimizing Substrate Blockchains</h4><p>Before proceeding, let’s first comprehend how caching works in the Substrate framework:</p><ol><li>Quick Access: Accessing cached data is much faster than accessing data from storage.</li><li>Cache Population: Data is written to the cache when it’s first called from storage.</li><li>Least Used Object Removal: The least used object will be removed if the cache becomes full to accommodate new entries.</li></ol><p>Let’s now examine practical ways to optimize Substrate blockchains.</p><ol><li>Utilize Constants: Storing parameters in constants is preferable to pallet storage for customized pallets. Constants aren’t kept in storage and therefore don’t require resources to read from storage. Although modifying a constant requires updating the chain, the performance improvement is significant enough to outweigh this drawback.</li><li>Do not iterate on HashMap: EVM developers who transitioned to Substrate frequently use HashMap to store data. Iterations can be costly, and they don’t take advantage of the cache. To address this, we at Equilibrium utilize VecMap — a vector data storage that combines the benefits of a Map interface with high speed.</li><li>Storing Pallet Parameters: We prioritize a minimal number of data structures and encourage the creation of large ones. It has a negligible impact on performance while reducing the amount of memory calls notably improves efficiency. In our experience, reading/writing a vector with 1k elements is comparable to a single element. Minimizing the number of read/write operations is essential for optimal performance.</li><li>Storing Dynamic Data: Let’s look at assets as an example. If our chain doesn’t allow users to create new assets, and we often need to access parameters such as price, we can store these parameters in a VecMap instead of a HashMap. This way, the asset will be stored in the cache most of the time, resulting in faster transfers.</li><li>Using System Account Data: Before executing an extrinsic, Substrate performs two essential tasks: it checks the nonce and deducts the transaction fee. This action consolidates the System storage into the Account and caches the balances storage. In the cases of Polkadot and Kusama, these two storages are merged, enabling a single read-and-write operation to handle both functions. Expanding the account data provides a suitable place to store frequently used account parameters such as scores, ratings, and nicknames. By leveraging this approach, we can avoid excessive interactions with storage and optimize performance.</li><li>Utilize Off-Chain Workers: Off-chain workers, a powerful Substrate feature, contribute to optimization efforts. They allow delegating heavy tasks to be performed off-chain and only verify the result on-chain. At Equilibrium, we apply this approach to manage margin calls. We utilize off-chain workers to monitor accounts and verify margin calls off-chain. We eliminate the need to check all accounts on-chain, enhancing overall performance.</li><li>Conduct Extensive Stress Testing: To ensure the optimal performance of our blockchain, we understand the importance of thorough stress testing. While benchmarks provide a preliminary understanding of how complex an extrinsic is, they don’t consider critical factors like caching and storage size, which are essential for performance optimization. That’s why we subject our system to rigorous stress testing.</li></ol><p>We develop a deeper understanding of the actual duration of transactions and identify potential areas for improvement through the stress tests. They allow us to fine-tune our system, optimizing it for enhanced performance.</p><h4>Additional Blockchain Optimization Ideas</h4><p>In addition to the previous optimization techniques, let’s mention a couple ideas to further enhance the performance of Substrate blockchains.</p><ol><li>Custom Caching: One way to optimize performance is by implementing custom caching, which involves preloading data when adding an extrinsic (a transaction) to the pool. We can often determine the necessary data and efficiently preload it into the cache by analyzing the extrinsic’s arguments, ensuring faster access.</li><li>Deparallelizing data access: Currently, the parallelization implementation in Substrate does not allow storage calls and is thus largely ineffective. For Substrate technology to be competitive with, for example, payments giants, deparallelizing data access is mandatory.</li></ol><p>These practical optimization techniques for Substrate blockchains allow us to improve system performance. We continue to explore and experiment with optimization techniques to realize the full potential of Substrate-based blockchain systems.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f5552f8f917b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How IBC and XCM Drive Interoperability In Polkadot and Beyond]]></title>
            <link>https://eqlab.medium.com/how-ibc-and-xcm-drive-interoperability-in-polkadot-and-beyond-2ce08042b14e?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/2ce08042b14e</guid>
            <category><![CDATA[xcm]]></category>
            <category><![CDATA[cosmos-network]]></category>
            <category><![CDATA[ibc]]></category>
            <category><![CDATA[polkadot]]></category>
            <category><![CDATA[interoperability]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Fri, 26 May 2023 07:24:32 GMT</pubDate>
            <atom:updated>2023-05-26T07:24:32.130Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*owmcMY2l0CrVnd6Ej7zKFA.png" /></figure><p>As blockchain technology continues to evolve, achieving seamless communication and interoperability between different chains has become a crucial objective. In this article, we delve into two prominent protocols — Inter-Blockchain Communication (IBC) and Cross-Consensus Messaging (XCM) — that enable secure, permissionless, and trustless transfer of data between blockchains. We will explore both IBC and XCM, their functionality, features, and potential use cases.</p><p>At its core, IBC is an interoperability protocol that facilitates the transfer of data, assets, and logic between distinct blockchains. The protocol operates on the principles of simplicity, flexibility, and decentralization, offering a powerful solution for connecting blockchain networks.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*YICXsbqaUvNb0tdz.png" /></figure><p>Three abstraction layers: channels, connections, clients. Channels to identify application, connections for double identity verification, and clients to track consensus state of recipient chains.</p><p>When we send a packet on one chain we will submit a commitment proof, it will be recorded into the state. Then a relayer will construct a packet and add a proof that this was submitted into state and then submit this on the receiving chain which can then verify it using the Light Client of chain A that they have stored on chain B.</p><p>There are different Light Clients per consensus type. IBC’s scope has expanded beyond the Tendermint consensus chains, thanks to the efforts of projects like Composable, which now support Substrate-based chains.</p><p>On top of clients there are connections. They operate once clients have been set up. It is a double identity verification. Both channels and connections are set up by handshakes.</p><p>The last layer of abstraction is channels. They are also set up with a handshake. In combination with the port they identify the application. Channel for a fungible token transfer over IBC could look like transfer/channel-0/base-denom where ‘transfer’ is the port name.</p><p>Relaying is permissionless and can be incentivized. IBC v4 and onwards contains fee middleware. Two implementations of relayer software available: one is Hermes developed in Rust and another is Go Relayer.</p><p>Let’s look at the IBC packet lifecycle using ICS-20 fungible token transfer standard.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xRjaatPeTI-8eSLi.png" /></figure><p>Tokens on the left side are locked up by a user on Chain A, and after the tokens are locked, the packet is sent. The Light Client verification algorithm on Chain B checks whether the tokens on Chain A have been locked and mints IBC vouchers representing tokens of Chain A on Chain B.</p><p>Here’s a more generalized packet flow visualization:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*al3SS2N4uKWkkO8C.png" /></figure><p>This packet flow representation can be applied not only to fungible tokens but also to any data packets. Flow can be done in two different ways: by using interchain accounts or via custom applications.</p><p>Let’s look at custom IBC applications first.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*CMNWbuf8K5OIkbFd.png" /></figure><p>Custom IBC applications allow for the development of completely customizable data transfers between chains. The exact requirements for module application to be IBC compatible can be found in the documentation. Specific application logic can then be added to such IBC compatible modules. Any data can be sent to the corresponding counterparty module. ICS-x means that the token will have a number instead of the ‘x’ which refers to a particular application.</p><p>Let’s now examine interchain accounts.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*et-CppHAR_l2SN96.png" /></figure><p>The interchain accounts option allows the use of functionality on Chain B from Chain A without leaving Chain A’s environment.</p><p>Chains can implement both or either controller or host functionality. Host chain hosts ICA, executes sent txs. Controller chain triggers actions to be executed on the Host chain.</p><p>Let’s now explore a scenario where the relayer didn’t pick up the packet.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*UZzuxtM90CcU-S5L.png" /></figure><p>To avoid funds getting locked up forever a timeout functionality is implemented. The cool thing about IBC is it allows you to query not only receipts but also non-receipts. Such a query allows the user to submit a timeout command and revert the original send packet logic.</p><p>ICA have ordered channels. If such a channel has a timeout it is closed automatically.</p><p>Functionality that doesn’t go in the IBC core can be used as middleware and reused for different applications thus building a middleware stack.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*WDgtCQ9_rp74DWjx.png" /></figure><p>This diagram shows that we can keep stacking middleware and create functionality that way. Here packet and write_ack go from base application to Core IBC. Handshake, acks and timeouts go from Core IBC through the middleware to the base application. Order matters and must be replicated on the counterparty chain.</p><p>XCM is a cross-chain messaging protocol that enables the transfer of data and assets between chains in a more sophisticated and programmable way than ever before. XCM V3 includes improvements in three key areas: expectations and branching, introspection and safe dispatches, and asset exchange and NFTs.</p><p>Let’s now examine expectations and branching in more detail.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*JPZ-fVkPBD_hW9mN.png" /></figure><p>There are three new instructions: ExpectAsset, ExpectError and ExpectOrigin. They are related to three existing registers: Holding, Error, Origin. This allows for branching: changing the flow depending on errors thrown.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*gvZqh17tileqUjps.png" /></figure><p>Safe dispatches allow for version control of destination chain and specific pallet. There is a new register called ‘Transact Status Register’ and four new instructions: QueryPallet, ExpectPallet, ReportTransactStatus, ClearTransactStatus. The new register holds the result of the most recent transact operation. QueryPallet gives back the instances of a specific pallet or module. ExpectPallet throws an error if the expected version does not match the one we get back. ReportTransactStatus reports what the Transact Status Register holds and ClearTransactStatus clears the data.</p><p>The goal of these statuses is to ensure no unexpected behavior is happening.</p><p>The second big category introduced in XCM v3 is Functional Multichain Decomposition. It is designed to allow for building utilizing logic from multiple chains. The changes here can be grouped into three categories:</p><ul><li>Remote Locking</li><li>Context/ID for tracking messages &amp; queries</li><li>Asset Namespacing</li></ul><p>Remote Locking enables chains to use assets in other chains. Four new instructions here:</p><ul><li>LockAsset</li><li>UnlockAsset</li><li>NoteUnlockable</li><li>RequestUnlock</li></ul><p>One of the goals for Functional Multichain Decomposition is to enable tracking XCM messages. A new register ‘Topic’ is introduced. It can be set to any value and used as an ID by itself or in combination with ‘Origin’ to create a unique identifier.</p><p>There is a way to let ExmExecutor know about the context of the instruction using the XcmContext struct. It has three fields: Origin, XcmHash, Topic. This allows to track XCM message’s context and thus have an application spread between different shards.</p><p>The third big area of note is bridging. The four key improvements here are:</p><ul><li>Universal Location</li><li>Message Exporting</li><li>Two stage Send and Export</li><li>Logical Origins</li></ul><p>Universal Location is a new and unique location, a parent of all locations (different consensus systems). It encompasses relay chains and parachains. It has no parent and allows to use ‘Context’ for locating within the Universal Location.</p><p>There are three new SendXcm impls to manage routing over a bridge. They cover three scenarios:</p><ol><li>The bridge is local</li><li>The bridge is in Local consensus but not on local chain (no fees expected)</li><li>The bridge is not local (fees expected)</li></ol><p>Two stage Send and Export means that SendXcm is now a two-stage process: validate and deliver. Validate does price discovery and returns a ticket. Deliver executes the transaction.</p><p>The rise of IBC and XCM protocols represents significant milestones in achieving seamless communication and interoperability across blockchain networks. Through their secure, permissionless, and trustless nature, IBC and XCM empower developers to create decentralized applications that transcend the boundaries of individual chains. By enabling data transfer, asset exchange, and sophisticated programmability, these protocols pave the way for the next generation of blockchain innovation, facilitating collaboration, scalability, and enhanced user experiences in the decentralized ecosystem.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2ce08042b14e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Utilizing Binary Heaps to Store Data in Solidity]]></title>
            <link>https://eqlab.medium.com/how-binary-heaps-are-utilized-in-a-leveraged-trading-protocol-on-evm-f2242a3df81a?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/f2242a3df81a</guid>
            <category><![CDATA[evm]]></category>
            <category><![CDATA[defi]]></category>
            <category><![CDATA[solidity]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[lending]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Wed, 26 Apr 2023 16:40:38 GMT</pubDate>
            <atom:updated>2023-05-29T08:32:42.054Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*R8N3b_hOG8klnujPRnxNmA.png" /></figure><p><a href="https://eqlab.io/">EQ Lab</a> develops a variety of different products on multiple blockchain platforms. Among others, there is am EVM-based decentralized lending protocol that allows users to take up to 20x leveraged long and short positions on crypto assets across different DEX-es and AMMs. In this article we will explore how this product utilizes binary heaps to handle margin calls.</p><h4>Pools</h4><p>The protocol is comprised of liquidity pools. Each pool consists of a quote asset (stablecoin) and a base asset (risk asset). For each pool there is a corresponding AMM pool where quote and base assets can be exchanged. Lending pools allow to deposit base or quote asset, go long or short (borrow the other asset with up to 20x leverage), withdraw base or quote asset, and close long/short positions.</p><p>Four indexes are calculated for each pool. They are baseCollateralCoeff, baseDebtCoeff, quoteCollateralCoeff, quoteDebtCoeff. These are used to determine interest rates.</p><h4>Positions</h4><p>There are three types of positions: Lend, Long, and Short When a user creates any of these positions a discounted balance is stored instead of the “real” balance. This is how it is calculated:</p><p>discountedBalance = realBalance / coeff</p><p>There are separate coefficients for Lend, Long and Short positions. For example if a Lend position is created by depositing quote asset the following calculation applies:</p><p>discountedQuoteAmount = realAmount / quoteCollateralCoeff</p><p>The calculation for Short and Long positions is as follows:</p><p>discountedBaseAmount = realAmount / quoteDebtCoeff</p><p>Short and Long positions are then stored in two separate collections. They are sorted in descending order of debtAmount/collateralAmount. For short positions this is calculated as baseAmount/quoteAmount, and for long positions the calculation is quoteAmount/baseAmount.</p><p>These sorted positions are stored in a Max binary heap.</p><p>Any user action that changes a position’s quoteAmount/baseAmount ratio triggers a recalculation of the binary heap such that the first element is always the riskiest position.</p><h4>Interest rates</h4><p>Interest rates are scaled proportionally to asset volatility and leverage. Total long leverage and total short leverage is calculated for each pool. Users who take up long or short positions pay interest fees to collateral providers. Fee accrual is done by changing baseCollateralCoeff, quoteCollateralCoeff coefficients. Fee write-off occurs by modifying the baseDebtCoeff and quoteDebtCoeff.</p><h4>Margin calls</h4><p>User action triggers a heap check of long and short positions leverages. Leverage is calculated for the riskiest position (heap root). It is then compared to the max leverage pool parameter. If the position’s leverage exceeds max leverage, the position is liquidated. In this case collateral is swapped and used to cover liabilities. The rest is then distributed between lenders. If there is not enough collateral to settle, the lenders cover the difference. These actions are performed by modifying baseCollateralCoeff or quoteCollateralCoeff. This way individual balances don’t need to be changed.</p><p>This design allows to run an automated liquidator as well as potentially implement no-liquidation systems in future versions of the protocol. It is more capital efficient compared to designs that implement collateral, debt and balances positions for each user because liquidity can be reused: the same capital can be used to go both long and short simultaneously. This could ultimately result in a superior product and user experience.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f2242a3df81a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Enhancing Ledger Integration for Polkadot Parachains: A Proposed Solution]]></title>
            <link>https://eqlab.medium.com/enhancing-ledger-integration-for-polkadot-parachains-a-proposed-solution-cef80c6b2dd1?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/cef80c6b2dd1</guid>
            <category><![CDATA[parachain]]></category>
            <category><![CDATA[ledger]]></category>
            <category><![CDATA[polkadot]]></category>
            <category><![CDATA[crypto-wallet]]></category>
            <category><![CDATA[ledgerwallet]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Fri, 17 Mar 2023 16:14:07 GMT</pubDate>
            <atom:updated>2023-03-17T16:14:07.111Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EG3UF2u27W3zWwudU8hgig.png" /></figure><p>Ledger integration with Polkadot parachains is crucial but presents challenges, including extended response times and non-intuitive application experiences due to unique account derivation paths.</p><p>With no dedicated Ledger app for parachains, users risk losing access to funds due to insecure browser extensions and mobile apps. To protect against this danger, we suggest developing an application with a single signature standard usable across multiple parachains — much like Keplr in Cosmos or Metamask on Ethereum-based blockchains.</p><p>Below is a table summarizing the challenges and impact of the current Ledger integration model and the recommendations to streamline Polkadot-Ledger integration:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/909/1*Sku6GuzUSLvzngvJ4Fvu_w.png" /></figure><h4><strong>A Universal Ledger App for Improved Security and User Experience</strong></h4><p>Learn about how we propose to make a unified Ledger app by eliminating data encoding on the device in our blog post: <a href="https://blog.eqlab.io/proposed-solution-for-ledger-integration-compatible-with-all-polkadot-parachains/"><strong>Proposed Solution For Ledger Integration Compatible With All Polkadot Parachains</strong></a>. We provide a demonstration of one potential implementation with transactions to three parachains in what we believe to be a reasonable compromise that could benefit the entire ecosystem!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cef80c6b2dd1" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Solidity Source Mapping]]></title>
            <link>https://medium.com/coinmonks/solidity-source-mapping-afb95215b52a?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/afb95215b52a</guid>
            <category><![CDATA[solidity]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[truffle]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[solidity-tutorial]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Fri, 27 Jan 2023 17:48:47 GMT</pubDate>
            <atom:updated>2023-02-10T11:32:50.238Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TxYO7pPVznp_f8ZQBgWcLg.png" /></figure><p>If you have coded on Solidity, you do know that, contrary to its commonly-praised simplicity, this language has many inherent peculiarities, along with the Ethereum run-time environment itself. And if you aren’t fully armed against such, they can greatly increase the time for debugging, giving you and your PM much of a headache.</p><p>For instance, there are several different types of memory available to the contract. Another tricky thing is that the basic data type is a 256-bit integer (32 bytes) and the byte order is not little-endian like in x86, but <a href="https://chortle.ccsu.edu/AssemblyTutorial/Chapter-15/ass15_3.html">big-endian</a>. What is more, the solidity compiler may generate an error without specifying a line or a source file which it struggled to compile, and some seemingly innocuous and concise language constructs can unfold into a large number of inefficient bytecode during compilation.</p><p>To better understand what exactly the compiler turns solidity code into, you can use disassemblers and decompilers. But while disassemblers are pretty hard to use on their own, the output generated by a decompiler can differ drastically from the original contract code. Still, there is a kind of a ‘magic wand’ to sort this out.</p><p><a href="https://truffleframework.com/docs/truffle/testing/writing-tests-in-solidity">Truffle</a>, the most popular framework for working with the code on Solidity, generates plenty of other useful data during compilation, apart from the bytecode of the contract. We can use this data to conveniently match the source code with the instructions and the other way around.</p><p>In our post <a href="https://blog.eqlab.io/solidity-source-mapping/">Solidity Source Mapping</a> explore the way Truffle data gives you the insight into how your code actually behaves and what exactly it does in the blockchain. We walk you step by step through the Source mapping process, which is also a really convenient way to analyze bottlenecks in your code.</p><p>Stay tuned! Yours, EQ LAB Team</p><blockquote>New to trading? Try <a href="https://medium.com/coinmonks/crypto-trading-bot-c2ffce8acb2a">crypto trading bots</a> or <a href="https://medium.com/coinmonks/top-10-crypto-copy-trading-platforms-for-beginners-d0c37c7d698c">copy trading</a> on <a href="https://medium.com/coinmonks/crypto-exchange-dd2f9d6f3769">best crypto exchanges</a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=afb95215b52a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/coinmonks/solidity-source-mapping-afb95215b52a">Solidity Source Mapping</a> was originally published in <a href="https://medium.com/coinmonks">Coinmonks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Utilizing Multichain Bridge and Moonbeam to bring Liquidity to Polkadot Parachains]]></title>
            <link>https://eqlab.medium.com/utilizing-multichain-bridge-and-moonbeam-to-bring-liquidity-to-polkadot-parachains-3f9ec2d03d73?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/3f9ec2d03d73</guid>
            <category><![CDATA[moonbeamnetwork]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[polkadot-network]]></category>
            <category><![CDATA[defi]]></category>
            <category><![CDATA[multichain]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Fri, 27 Jan 2023 17:25:01 GMT</pubDate>
            <atom:updated>2023-01-27T17:25:01.429Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hFEqicWzcD7HS-Vkxhd01Q.png" /></figure><p>Unlocking Ethereum liquidity is widely considered of paramount importance to any DeFi protocol’s success no matter the chain it chooses to launch on.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MPKsOBtn6SgQT4i45NPbog.png" /></figure><p>This DefiLlama chart illustrates almost 60% of all Defi TVL is locked on Ethereum. This makes bridging liquidity from Ethereum a high priority for <a href="https://equilibrium.io/">Equilibrium</a>.</p><p>This article will examine Equilibrium’s bridging solution that allows for cross-chain transfers between EVM networks and Polkadot parachains. It’s a unique contribution to the parachain ecosystem since it pioneers the concept of one parachain using another as a bridge. A brief overview of the underlying tech will also be provided. Let’s start with the basics.</p><p>Multichain is an open-source project that builds interoperable infrastructure for cross-chain interactions. It supports over eighty blockchain networks with approximately$1.6B TVL. Multichain has a history of reliability and trustworthiness stretching back to July 2020. Let’s examine Multichain’s Cross-Chain Bridge and Router.</p><h3>Multichain Cross-Chain Bridge</h3><p>The bridge fundamentally allows an asset to be sent from one chain to another. Let’s briefly describe how it works.</p><p>First an asset is locked on a token wrapper controlled by the Router contract on the source chain side. An MPC (Multi-party computation) Network with 28 validators verifies the transactions on the source chain and then signs token minting or withdrawal transactions on the target chain. A wrapped asset is then minted or native asset is withdrawn on the target chain. Wrapped assets can be burned to facilitate transfers from the target chain to the original one.</p><p>More info on the <a href="https://docs.multichain.org/getting-started/how-it-works/cross-chain-bridge">Cross-Chain Bridge</a>.</p><p>Active MPC validator set can be found <a href="https://scan.multichain.org/#/network">here</a>.</p><h3>Multichain Cross-Chain Router</h3><p>The Router enables asset transfers for native tokens and those created with Multichain Bridge (bridged) between two or more chains. Liquidity pools support native assets since Multichain can not mint or burn those tokens. This requires tokens to be supplied to liquidity pools externally. Bridged assets do not require liquidity pools because Multichain controls the supply of those assets by minting and burning bridged tokens.</p><p>It’s also possible to combine native and bridged assets when a project adds support for extra chains via the router. Tokens on the chains supported by Multichain are considered bridged, while pre-existing tokens are considered native.</p><p>More info on the <a href="https://docs.multichain.org/getting-started/how-it-works/cross-chain-router">Cross-Chain Router</a>.</p><h3>SMPC network</h3><p>Multichain uses a Secure Multi Party Computation (SMPC) network of nodes. These nodes generate parts of the private key for signing transactions. An algorithm selects a set of nodes from the network to do this. Selected nodes then sign transactions collectively. This mechanism is used for every supported network.</p><p>More info on <a href="https://docs.multichain.org/getting-started/security/security-model">SMPC</a>.</p><h3>Moonbeam EVM parachain</h3><p>Moonbeam is a parachain on Polkadot designed as an onramp for developers. It’s an Ethereum-compatible L1 smart contract platform. Moonbeam is one of the ecosystem’s biggest and best-known projects, the first winner of parachain auctions on Polkadot. Moonbeam enables developers to go cross-chain with their existing Ethereum dapps as well as create new cross-chain projects.</p><h3>XCM</h3><p>XCM stands for Cross-Consensus Message. It is how Polkadot brings interoperability to its projects. XCM format defines how messages are sent between blockchains, effectively connecting parachains to the relay chain and each other. This delivers on the promise of cross-chain application interoperability as more and more projects launch on Polkadot parachains allowing users to interact with all of them from a single dapp.</p><p>The main use case for XCM currently is accessing tokens in cross-chain dapps. Smart contracts on Moonbeam can communicate directly to perform transactions and other activities.</p><p>More info about XCM on Polkadot Wiki and Moonbeam.</p><h3>XC-20 tokens</h3><p>XC-20 is a token standard for ERC-20 tokens on Moonbeam. These tokens are cross-chain-ready and transferable across the entire Polkadot ecosystem. This is useful for applications that want to integrate native tokens as ERC-20s.</p><p>See Moonbeam docs for a detailed breakdown of how XC-20 works.</p><h3>How it all comes together on Equilibrium</h3><p>In <a href="https://equilibrium.io/">Equilibrium’</a>s case, both EQ and EQD tokens are controlled by Multichain, meaning that Multichain routers have minting and burning rights for these tokens. These minting and burning actions allow for control over the supply of these assets on the chain where the smart contract resides. This means all that is required for the bridge to work is a supply of assets on the chain where the token was originally minted. This is what bridging looks like for EQD:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*z4E2vXPjVPK7PxV2.png" /></figure><p>The Equilibrium team developed a proxy contract that implements AnycallProxyBase interface and allows token transfer from Moonbeam to another parachain in the Polkadot ecosystem. This solution may be used by any team which wants to use a Multichain bridge in their parachain.</p><p>For a more in-depth look into how it works see <a href="https://github.com/anyswap/multichain-smart-contracts/blob/main/contracts/router/proxy/AnycallProxyBase.sol">github</a>.</p><p>Moonbeam contains system contracts that connect EVM and Substrate parts of the network.</p><p>Using this contract, users may transfer XC-20 tokens from their Moonbeam EVM address to another parachain with substrate-type addresses.</p><p>The xTokens -transfer method allows sending XC-20 and pays fees in this token.</p><p>Using this method will move XC-20 tokens from a user to a sovereign account of the destination parachain in Moonbeam. The same value will be deposited to a recipient in the destination parachain.</p><p>Equilibrium put together two great things — a custom proxy call and “xTokens” contract and made automated deposits to Equilibrium or any other parachain from Multichain-supported networks possible.</p><p>Here is a generalized overview of what happens to the tokens under the hood using WBTC, ETH and USDC as an example:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Nc_lEZ5TWBADv4BS.png" /></figure><p>Equilibrium implemented `XcmTransferProxy` for transferring tokens from Moonbeam to another parachain without additional user transactions. The code for this is on <a href="https://github.com/anyswap/multichain-smart-contracts/blob/main/contracts/router/proxy/XcmTransferProxy.sol">Github</a>.</p><p>Here’s how it streamlines the token transfer process:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aXOw92pLtT_54H-mMtpv2w.png" /></figure><h3>Withdrawal flow optimization</h3><p>One of future Moonbeam runtime releases will enable the EVM call by XCM feature. It will be a powerful tool enabling interaction with EVM contracts on Moonbeam from any parachain.</p><p>Withdrawals from Equilibrium or any parachain will be enabled without additional user transactions on Moonbeam after the feature is released.</p><p>This is what withdrawal flow looks like now compared to after optimization:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xkK41IQ0FhZ8Cnkg.png" /></figure><p>Bridging liquidity across different chains is a complex and challenging process to streamline. Equilibrium has made a momentous step forward by developing a custom bridging solution. It benefits the project and ecosystem as a whole in two significant ways. Firstly it unlocks Defi TVL on Etherium and brings it to Polkadot parachains, and secondly, it facilitates the realization of Equilibrium’s mission to make EQD a cross-chain stablecoin.</p><p>This kind of cooperation between Equilibrium and Moonbeam in developing a solution that can be used by all parachains and benefits the entire ecosystem is the manifestation of a long-term vision of interoperability and value accrual that is now becoming a reality.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3f9ec2d03d73" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[EQ Lab & The Future of Decentralized Finance]]></title>
            <link>https://eqlab.medium.com/eq-lab-the-future-of-decentralized-finance-651e50049817?source=rss-8aa775d98642------2</link>
            <guid isPermaLink="false">https://medium.com/p/651e50049817</guid>
            <category><![CDATA[defi]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[rust]]></category>
            <category><![CDATA[blockchain-technology]]></category>
            <category><![CDATA[ethereum-blockchain]]></category>
            <dc:creator><![CDATA[EQ Lab]]></dc:creator>
            <pubDate>Fri, 27 Jan 2023 17:21:47 GMT</pubDate>
            <atom:updated>2023-01-27T17:21:47.722Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0Tupa8SSblO9j5m50baItg.png" /></figure><p><a href="https://eqlab.io/">EQ Lab</a> is a software engineering company specializing in building robust and innovative Web3 products on top of multiple decentralized platforms, including Ethereum, Polkadot, TON, and others. Our core expertise lies in the field of finance and decentralized economy but is not limited to ranging from high-load infrastructure to applications incorporating NFT-based structures.</p><p>The flagship project in our portfolio is <a href="https://equilibrium.io/">Equilibrium</a>, a cutting-edge all-in-one DeFi platform that leverages the power of the Substrate development framework and Polkadot’s parachain architecture. It provides users with a seamless and secure experience offering a wide range of features such as a decentralized stablecoin, lending, borrowing, and trading. Equilibrium’s mission is solving capital inefficiency in DeFi, making Equilibrium a versatile and powerful solution for high-leverage yet safe operations with digital assets.</p><p>What sets EQ Lab apart is our valuable blend of financial expertise and technical know-how.</p><p>Some of the team’s notable past achievements include:</p><ul><li>GMRA-compliant p2p lending protocol on Ethereum called Nitrogen. It supported various ERC-20 tokens and sophisticated risk management models from TradFi repo markets.</li><li>EOSIO-based collateral-backed stablecoin protocol (EOSDT). The protocol leveraged EOSIO blockchain speed and deferred transactions to optimize liquidations thus lowering collateral requirements.</li><li>Bridge between TON blockchain and heterogenous networks. It adhered to a federated relay structure and was built using TON’s Fift and C++ languages.</li><li>Sophisticated risk-based approach to collateral backed loans on Polkadot which allowed to build a unified money-market, a stablecoin and a spot margin trading engine with leverages up to 20x.</li><li>The Curated — a digital catalog that allows for purchasing of digital art collections picked by a panel of experts.</li><li>Expertise and extensive research in the field of ZKPs allowed to build a proof of concept for rust-based blockchains (Substrate and Polkadot in particular).</li></ul><p>As you can see from the list above, it’s not just Polkadot at the center of EQ Lab focus. The Substrate experience means the team is well-versed in building complex custom modular blockchain solutions. XCM technology is one example that has the potential to be utilized to transfer messages between different ecosystems and implemented outside of Polkadot.</p><p>EQ Lab team’s first-hand experience building on Polkadot has led to a number of unique technical solutions on offer to help less experienced teams and projects looking to get into the space.</p><p>Here is a non-exhaustive list of custom features and areas of expertise EQ Lab team perfected while building Equilibrium:</p><ul><li>Unique bailsmen liquidation mechanism</li><li>Robust oracle solution</li><li>XCM implementation experience</li><li>Testnets and full emulation integration testing</li><li>Custom assets and balances, balances double accounting</li><li>Bridging solutions for EVM chains</li><li>Blockchain backend development</li><li>Custom balance checker and algorithmic asset management</li><li>Blockchain storage and trx throughput optimization</li></ul><p>The aim is to create innovative and secure DeFi solutions that meet the needs of our clients using our extensive knowledge and experience. Partnering with EQ Lab will give you access to our team’s expertise and resources and open the doors to DeFi.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=651e50049817" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>