<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mayukha Vadari</title>
    <description>The latest articles on DEV Community by Mayukha Vadari (@mvadari).</description>
    <link>https://dev.to/mvadari</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F730555%2F97c6f881-6469-4c18-8c12-4d40bd4302e6.jpg</url>
      <title>DEV Community: Mayukha Vadari</title>
      <link>https://dev.to/mvadari</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mvadari"/>
    <language>en</language>
    <item>
      <title>Smart Escrow Series #3: Security</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Thu, 18 Dec 2025 18:28:25 +0000</pubDate>
      <link>https://dev.to/ripplexdev/smart-escrow-series-3-security-3e0p</link>
      <guid>https://dev.to/ripplexdev/smart-escrow-series-3-security-3e0p</guid>
      <description>&lt;p&gt;The XRP Ledger (XRPL) is recognized for its &lt;strong&gt;stability, efficiency, and robustness&lt;/strong&gt;. As the XRPL introduces custom on-chain business logic via Smart Escrows and the underlying WebAssembly (WASM) virtual machine, one paramount design objective is to maintain the network's integrity and security.&lt;/p&gt;

&lt;p&gt;The implementation of Smart Escrows relies on a &lt;strong&gt;security-first design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Strict Sandbox: Preventing Unauthorized Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The WASM code is executed in a &lt;strong&gt;secure, sandboxed environment&lt;/strong&gt;. Advanced WASM features are disabled, to limit the surface area for bugs and exploits. The memory limits of the WASM module is also strictly limited.&lt;/p&gt;

&lt;p&gt;The fundamental rule for the WASM code in Smart Escrows is &lt;strong&gt;read-only access, with only very specific write access allowed&lt;/strong&gt;. WASM code has read-only access to all ledger objects and a variety of other on-chain data (such as ledger header information). It only has write access to the Data field in the Escrow that it is attached to. The only influence the WASM code has is updating the Data field and returning whether or not the escrow can be released. This strict limitation ensures that the custom logic cannot negatively affect the integrity of the ledger or the balances of other accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzh6bsq0ed8t755cbncos.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzh6bsq0ed8t755cbncos.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guarding the Network: Resource Limits and Gas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A major security concern with introducing programmable code is the potential for denial-of-service (DoS) attacks, where malicious code attempts to create infinite loops or consume excessive resources. To mitigate this, &lt;strong&gt;execution is strictly bounded&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every step of WASM execution consumes "&lt;strong&gt;gas&lt;/strong&gt;". When a user submits an EscrowFinish transaction, they must include a &lt;code&gt;ComputationAllowance&lt;/code&gt; field, which dictates the maximum amount of gas they are willing to pay for the code execution. If the custom code exceeds the gas budget provided in the &lt;code&gt;ComputationAllowance&lt;/code&gt;, the execution is &lt;strong&gt;immediately terminated&lt;/strong&gt; with a deterministic failure. This prevents malicious or buggy code from running infinitely and ensures the execution remains fast and predictable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja1iq55yjkxxsj95wl4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja1iq55yjkxxsj95wl4i.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key resource constraints, such as the maximum WASM code size and the maximum computation allowed, are &lt;strong&gt;UNL-adjustable parameters&lt;/strong&gt; controlled via the standard fee-voting process. This allows the network to &lt;strong&gt;dynamically adjust resource usage and pricing&lt;/strong&gt; as network performance changes or if abuse attempts arise, without requiring a separate, full amendment. This also enables a &lt;strong&gt;fast shutdown mechanism&lt;/strong&gt;, with the ability to shut down all usage of WASM code by setting the computation limit to 0.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujfpjdp4o77wd6vd5504.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujfpjdp4o77wd6vd5504.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User and Developer Protections&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To mitigate the risk of funds becoming permanently locked (stuck) due to buggy custom code, any escrow containing a FinishFunction &lt;strong&gt;must&lt;/strong&gt; also be cancellable. This mandatory feature ensures that if the custom conditions can never be met (due to a bug in the code or a flaw in the logic), the sender can still recover the funds after the specified CancelAfter time has passed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audits and Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The entire implementation is currently undergoing &lt;strong&gt;rigorous testing and multiple security audits&lt;/strong&gt; to confirm that the WASM runtime is securely integrated into rippled and ensure that WASM code cannot violate the assumptions and invariants that have been established.&lt;/p&gt;

&lt;p&gt;Wasmi, the chosen runtime, has also been audited twice previously for blockchain use cases. Those audit reports are available publicly here: &lt;a href="https://github.com/wasmi-labs/wasmi/tree/main/resources" rel="noopener noreferrer"&gt;https://github.com/wasmi-labs/wasmi/tree/main/resources&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This security framework ensures that the flexibility of custom programming is introduced through &lt;strong&gt;small, measured steps&lt;/strong&gt;, leveraging the stability of existing XRPL primitives while &lt;strong&gt;strictly containing the risks associated with user-deployed code&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>security</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Smart Escrow Post #2: What is WebAssembly?</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Fri, 12 Dec 2025 22:04:51 +0000</pubDate>
      <link>https://dev.to/ripplexdev/smart-escrow-post-2-what-is-webassembly-4of3</link>
      <guid>https://dev.to/ripplexdev/smart-escrow-post-2-what-is-webassembly-4of3</guid>
      <description>&lt;p&gt;As the XRPL moves toward permissionless programmability, starting with Smart Escrows, it needs a secure, reliable, and high-performance engine to run custom developer code. The conclusion we came to is that that engine should be &lt;strong&gt;WebAssembly, often abbreviated as WASM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Earlier this year, the RippleX Programmability team surveyed various virtual machine (VM) options, and concluded that WASM was the best choice for the XRPL ecosystem for a few different reasons. Read more here: &lt;a href="https://dev.to/ripplexdev/a-survey-of-vms-for-xrpl-programmability-eoa"&gt;https://dev.to/ripplexdev/a-survey-of-vms-for-xrpl-programmability-eoa&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;WASM is not exclusive to the blockchain world. It’s a &lt;strong&gt;universal, open standard&lt;/strong&gt; that was originally designed to run high-performance applications in web browsers (though now it is used in many other contexts as well). It is intended to support any language on any operating system, and in practice most languages have some level of support. &lt;a href="https://webassembly.org/" rel="noopener noreferrer"&gt;https://webassembly.org/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0k3k0zufo6nhfbm2ixa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0k3k0zufo6nhfbm2ixa.png" alt=" " width="800" height="954"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WASM-based smart contract runtimes are &lt;strong&gt;deterministic, secure, and portable&lt;/strong&gt;. The entire system relies on WebAssembly's &lt;strong&gt;core promise of deterministic execution&lt;/strong&gt;, meaning the code will run identically on all rippled nodes, regardless of operating system or hardware, to ensure consensus is maintained. In addition, WASM promises better performance, and supports many general-purpose programming languages, like Rust, C, and Go (in other words, a Web2 developer may not have to learn a new language). With those benefits, WASM is the most popular smart contract language choice of many of the newer blockchain projects, such as Polkadot, Cosmos, Near, and most recently Soroban on Stellar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhfqv42zua9v0yxge47w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhfqv42zua9v0yxge47w.png" alt=" " width="800" height="775"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Host Functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To securely access ledger data and improve the efficiency of computation-intensive tasks, the WASM code relies on Host Functions. Think of a Host Function as an &lt;strong&gt;internal API call&lt;/strong&gt;: it is expressed outside the WASM code (in the efficient C++ code that runs the XRPL) and allows the WASM program to securely query data from the ledger state. In EVM terms, this is roughly equivalent to precompiles.&lt;/p&gt;

&lt;p&gt;The fundamental rule for the WASM code in Smart Escrows is &lt;strong&gt;read-only access, with only very specific write access allowed&lt;/strong&gt;. WASM code has read-only access to all ledger objects and a variety of other on-chain data (such as ledger header information). It only has write access to the Data field in the Escrow that it is attached to.  This strict limitation ensures that the custom logic cannot negatively affect the integrity of the ledger or the balances of other accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9l59u5xpbp2lxq1mr7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9l59u5xpbp2lxq1mr7m.png" alt=" " width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WASM runtime environments are low-level virtual stack machines, like JVM, and can be embedded into any host application (such as rippled). There are several different implementations, with various tradeoffs. We chose &lt;strong&gt;Wasmi&lt;/strong&gt; due to its performance and history of use in other blockchains (Polkadot and Solana also use Wasmi). &lt;a href="https://dev.to/ripplexdev/xrpl-programmability-wasm-runtime-revisit-2ak0"&gt;https://dev.to/ripplexdev/xrpl-programmability-wasm-runtime-revisit-2ak0&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In summary&lt;/strong&gt;, WASM is the secure, high-performance virtual machine that executes the custom release logic for Smart Escrows. It allows developers to deploy complex, conditional rules using familiar programming languages, all while operating within carefully guarded boundaries that ensure the security and stability the XRPL is known for.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>xrp</category>
      <category>blockchain</category>
      <category>webassembly</category>
    </item>
    <item>
      <title>Smart Escrows Post #1: What are Smart Escrows?</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Thu, 04 Dec 2025 17:35:56 +0000</pubDate>
      <link>https://dev.to/ripplexdev/smart-escrows-post-1-what-are-smart-escrows-34le</link>
      <guid>https://dev.to/ripplexdev/smart-escrows-post-1-what-are-smart-escrows-34le</guid>
      <description>&lt;p&gt;I’m starting a series focusing on different aspects of Smart Escrows. Post #1: &lt;strong&gt;What are Smart Escrows?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The XRP Ledger is built on a foundation of powerful, native features like &lt;a href="https://xrpl.org/docs/concepts/tokens/fungible-tokens" rel="noopener noreferrer"&gt;Tokens/Issued Assets&lt;/a&gt;, &lt;a href="https://xrpl.org/docs/concepts/payment-types/escrow" rel="noopener noreferrer"&gt;Escrow&lt;/a&gt;, the &lt;a href="https://xrpl.org/docs/concepts/tokens/decentralized-exchange" rel="noopener noreferrer"&gt;DEX&lt;/a&gt;, and &lt;a href="https://xrpl.org/docs/concepts/payment-types/payment-channels" rel="noopener noreferrer"&gt;Payment Channels&lt;/a&gt;, which are renowned for their security, efficiency, and robustness. While the XRPL’s &lt;a href="https://xrpl.org/docs/concepts/networks-and-servers/amendments" rel="noopener noreferrer"&gt;amendment process&lt;/a&gt; allows for careful, collectively-driven updates and provides a secure approach to introducing widely applicable features, this leaves a gap for developers who need to address the bespoke needs of their business but don’t want to (or can’t) drive broad community adoption for a specific (sometimes niche) use case. To maintain these core strengths while allowing developers greater onchain flexibility, a new vision for permissionless programmability is emerging.&lt;/p&gt;

&lt;p&gt;The first major component of this initiative is the concept of Smart Features. These allow developers some limited customizability, built on top of individual XRPL primitives. Essentially, developers are able to unlock powerful new capabilities while maintaining the simplicity and efficiency the network is known for. The Escrow is the very first primitive to receive this upgrade: enter Smart Escrows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcy7sbeii76gal8jao2p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcy7sbeii76gal8jao2p.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First: a refresher on the &lt;strong&gt;existing state of XRPL Escrows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://xrpl.org/docs/concepts/payment-types/escrow" rel="noopener noreferrer"&gt;XRPL Escrows&lt;/a&gt; are essentially onchain contracts that govern the all-or-nothing transfer of funds from one account to another based on pre-agreed terms. Currently, they can only hold XRP, but the TokenEscrow amendment (currently up for voting) will enable holding both IOUs (issued assets) and MPTs (multi-purpose tokens).&lt;/p&gt;

&lt;p&gt;Historically, there were only two ways to release funds held in an Escrow:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time-based: The escrow can be released after a specific, predetermined time has passed.
&lt;/li&gt;
&lt;li&gt;Condition-based: The escrow requires a "password" to be provided during the release transaction (essentially a hash-lock).
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj5e2yw90fft7vys73v4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj5e2yw90fft7vys73v4.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Custom Release Function for Escrows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Smart Escrows introduce a new layer of programmability to the existing Escrow primitive. Instead of being limited to just the time- and condition-based release options, &lt;strong&gt;developers can now write their own custom release conditions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This enhancement allows conditions that go beyond the current time-based or crypto-conditional constraints, significantly expanding the XRPL’s utility. Because Smart Escrows build upon the existing, battle-tested Escrow primitive, developers gain custom functionality without having to reinvent the wheel, such as via a completely separate smart contract.&lt;br&gt;&lt;br&gt;
The custom logic is introduced via &lt;strong&gt;a small, programmable code block that lives directly on the Escrow object&lt;/strong&gt;. When an Escrow is created using an EscrowCreate transaction, the developer uploads this code block (written in compiled WebAssembly or WASM - more on this to come) alongside the standard parameters and the funds to be locked.&lt;/p&gt;

&lt;p&gt;When a user attempts to complete the escrow and release the funds using an EscrowFinish transaction, the FinishFunction is executed on-chain. The function runs, and that custom code determines whether or not the escrow’s funds are released to its destination.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyv2emxsupzugfpxokwe7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyv2emxsupzugfpxokwe7.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By just adding this small bit of programmability, Smart Escrows allow a significant amount of new onchain functionality. Examples include:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notary Escrows: The escrow is structured so that only a specific, trusted account (the "notary") can authorize the release of the asset.
&lt;/li&gt;
&lt;li&gt;Compliance and Temporary Holds: Funds are held until compliance checks or KYC verification is complete. The custom function could check if the destination account holds a specific on-chain credential or NFT issued by a compliance provider before allowing the transfer.
&lt;/li&gt;
&lt;li&gt;Trustless Token Swaps (Delivery vs. Payment): Developers can link two escrows so that the completion of one depends on the creation or completion of the other, ensuring a trustless, atomic exchange of value or assets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to read more about XLS-100, here’s a link to the spec: &lt;a href="https://xls.xrpl.org/xls/XLS-0100-smart-escrows.html" rel="noopener noreferrer"&gt;https://xls.xrpl.org/xls/XLS-0100-smart-escrows.html&lt;/a&gt; &lt;/p&gt;

</description>
      <category>web3</category>
      <category>xrpl</category>
      <category>xrp</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>XRPL Programmability: WASM Runtime Revisit</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Mon, 01 Dec 2025 18:09:46 +0000</pubDate>
      <link>https://dev.to/ripplexdev/xrpl-programmability-wasm-runtime-revisit-2ak0</link>
      <guid>https://dev.to/ripplexdev/xrpl-programmability-wasm-runtime-revisit-2ak0</guid>
      <description>&lt;p&gt;&lt;em&gt;Authors: David Fuelling, Oleksandr Pidskopnyi, Mayukha Vadari, Peng Wang&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One primary aspect of the WebAssembly (WASM) integration with rippled is the runtime used. WASM runtime environments are low-level virtual stack machines, like JVM, and can be embedded into any host application (such as rippled). There are several different implementations, with various tradeoffs. When we did an initial analysis of different runtimes earlier this year, we chose to use WAMR, primarily due to its performance benefits.&lt;/p&gt;

&lt;p&gt;Upon finishing the initial development of the Smart Escrows implementation and reaching the review and testing stage, the RippleX programmability team decided to revisit the decision on the initial selection of &lt;a href="https://github.com/bytecodealliance/wasm-micro-runtime?" rel="noopener noreferrer"&gt;WAMR&lt;/a&gt; as our WebAssembly VM runtime, to ensure the chosen runtime is well-positioned for success in our XRPL usage context. The team now had better context on VM internals and a better understanding of WebAssembly in general, which enabled a deeper analysis now compared to when the initial decision was made. Based on some initial meetings with members of the WebAssembly community, the team investigated two alternative runtimes (&lt;a href="https://github.com/wasmi-labs/wasmi" rel="noopener noreferrer"&gt;Wasmi&lt;/a&gt; and &lt;a href="https://github.com/bytecodealliance/wasmtime" rel="noopener noreferrer"&gt;Wasmtime&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The team spoke to each of the three VM runtime teams directly, did some deeper analysis of the codebases and the ecosystems around each of the runtimes, and spoke to other trusted parties in the broader WebAssembly community.&lt;/p&gt;

&lt;h1&gt;
  
  
  Initial Investigation
&lt;/h1&gt;

&lt;p&gt;The three runtimes investigated were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WAMR&lt;/strong&gt; (the VM currently integrated in the Smart Escrow implementation)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WasmTime&lt;/strong&gt; (highly recommended by several researchers in the WASM ecosystem)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasmi&lt;/strong&gt; (used by Stellar and Polkadot)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security Postures
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WAMR&lt;/strong&gt; was created to service embedded-systems use-cases where the code running in the VM is “first party”, meaning that it is assumed to be trusted.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WASMTime&lt;/strong&gt; was created to run untrusted code (such as in a browser).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasmi&lt;/strong&gt; was also created to run untrusted code (on a blockchain). Wasmi was &lt;a href="https://github.com/wasmi-labs/wasmi/blob/main/NEWS.md#2024-02-07---announcement-transfer-of-ownership" rel="noopener noreferrer"&gt;originally created by&lt;/a&gt; Parity Technologies, the team behind Polkadot, for the explicit purpose of running programmability on the Polkadot blockchain.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Code Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WAMR&lt;/strong&gt;: The code is quite simple and written in C, which the team has a lot of experience with.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WasmTime&lt;/strong&gt;: Rather complex code and architecture. This makes it cumbersome to use and the increased complexity increases chances of potential bugs and security issues. To prevent resource exhaustion attacks, we explored loading/running wasmtime (at least the components before execution) in the VM itself - a complexity not needed for other runtimes.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasmi&lt;/strong&gt;: A simpler architecture and easier to digest, which also makes it easier for the programmability team to build knowledge about VM internals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  History of Security/Bugs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WAMR&lt;/strong&gt;: See section 2.2 of &lt;a href="https://cseweb.ucsd.edu/~dstefan/pubs/johnson:2023:wave.pdf" rel="noopener noreferrer"&gt;this research paper&lt;/a&gt; for some historical examples of bugs or security issues in WAMR that (according to the paper’s author) seem to be caused by a posture of assuming “first party” code on the part of the WAMR team. There have been a handful of &lt;a href="https://github.com/bytecodealliance/wasm-micro-runtime/security" rel="noopener noreferrer"&gt;major CVEs reported&lt;/a&gt;. The project has not had any audits done.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WasmTime&lt;/strong&gt;: There are many security-minded researchers working on it (as evidenced by the &lt;a href="https://github.com/bytecodealliance/wasmtime/security" rel="noopener noreferrer"&gt;number of small CVEs reported&lt;/a&gt;). The project has had audits done, but none of them are public.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasmi&lt;/strong&gt;: There are 2 &lt;a href="https://github.com/wasmi-labs/wasmi/tree/main/resources" rel="noopener noreferrer"&gt;public blockchain-focused audits&lt;/a&gt;. The runtime is live in two blockchains (Polkadot and Stellar) and has not had major issues. There has only been &lt;a href="https://github.com/wasmi-labs/wasmi/security" rel="noopener noreferrer"&gt;one major CVE reported&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Language Implementation
&lt;/h3&gt;

&lt;p&gt;Wasmtime and Wasmi are written in Rust, and support C APIs. WAMR is written in C.&lt;/p&gt;

&lt;p&gt;Rust brings to bear memory safety and other compile-time checks that help improve the robustness of any project as compared to projects implemented in C or C++. While not a firm requirement of the VM we choose, the advantage of a Rust-based VM is that bugs or vulnerabilities can more easily be caught at compile time. A disadvantage of a Rust-based VM is that our engineering team has less experience with Rust, so digging into it or customizing a Rust project might be more difficult. Potentially the use of AI tools and reliance on the WASMTime dev team to implement new features could be a mitigant here.&lt;/p&gt;

&lt;h2&gt;
  
  
  High-Level Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;WAMR&lt;/th&gt;
&lt;th&gt;WasmTime&lt;/th&gt;
&lt;th&gt;Wasmi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Code complexity&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Simple&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complex - 10x the code of Wasmi, with a lot of advanced features we don’t need&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Simple, easier to digest/understand&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prior blockchain usage&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;DFINITY’s &lt;a href="https://internetcomputer.org/" rel="noopener noreferrer"&gt;Internet Computer&lt;/a&gt;, Polkadot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Polkadot, Stellar’s Soroban&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Intended for embedded use cases and first-party code, not third-party code&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Security is first and foremost for the team&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Security is very good&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audits&lt;/td&gt;
&lt;td&gt;Has not been audited&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Has been audited (not blockchain-focused), but the audits are not public&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Multiple public audits, based on blockchain usage&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Native Fuel support&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Rust&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Rust&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Performance Analysis
&lt;/h1&gt;

&lt;p&gt;This report details the results of a comparative baseline performance test between four WebAssembly (WASM) virtual machines: &lt;strong&gt;WAMR, WasmTime (Pulley&lt;sup id="fnref1"&gt;1&lt;/sup&gt;), Wasmi, and Wasmtime (Winch&lt;sup id="fnref2"&gt;2&lt;/sup&gt;)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The VMs were tested against a basic WASM module at load levels of 100 TPS and 300 TPS, with each test running for 30 minutes. Higher TPS thresholds were not tested for this initial set of tests, since 300 TPS was enough to differentiate the four VM configurations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: these are just preliminary tests to differentiate the VM configurations, and should not be taken as an indication of final Smart Escrow/VM performance yet. These tests are also specific to integrating the runtimes into rippled, and are not reflective of the runtime performances in other contexts.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom Line
&lt;/h2&gt;

&lt;p&gt;Under the 300 TPS high-stress workload, &lt;strong&gt;Wasmi&lt;/strong&gt; delivered the most balanced and consistent performance profile. It combined fast ledger validation times, high ledger-processing throughput, and stable operation with minimal overvalidations&lt;sup id="fnref3"&gt;3&lt;/sup&gt; and no sync issues. WAMR performed well but had some minor stability issues, and WasmTime (both Pulley and Winch) were highly unstable and slow  (possibly due to large amounts of time spent loading/parsing contract bytecode into intermediate representations).&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Findings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;At 100 TPS:&lt;/strong&gt; All four VMs performed comparably and were stable, with no significant issues observed
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;At 300 TPS:&lt;/strong&gt; Significant performance differences emerged.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stability:&lt;/strong&gt; Wasmi and WAMR showed the highest stability. Wasmi had the lowest overvalidations (1) and zero P2P sync issues. WAMR also had zero sync issues, with slightly higher overvalidations (18).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instability:&lt;/strong&gt; WasmTime (Pulley) and Wasmtime (Winch) were highly unstable, with large overvalidations (217 and 149) and significant P2P sync problems (32 and 53).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ledger Processing:&lt;/strong&gt; Wasmi processed the most ledgers (480), making it the most efficient VM under load. WAMR was second (441). WasmTime and Winch processed substantially fewer (266 and 230).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation Time:&lt;/strong&gt; Wasmi had the fastest mean validation time (3.872s) at 300 TPS, ahead of WAMR (4.212s). WasmTime and Winch were significantly slower (6.983s and 8.082s).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transaction Throughput:&lt;/strong&gt; Wasmtime (Winch) showed a high mean TPS (492.66), but this is misleading; its slow validation, low ledger count, and instability suggest irregular batching rather than sustained throughput. Wasmi (294.04 TPS) and WAMR (286.31 TPS) delivered more consistent and realistic throughput aligned with their ledger processing.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Metrics @ 300 TPS (Averaged):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Metric&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;WAMR (Avg)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;WasmTime Pulley (Avg)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Wasmi (Avg)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Wasmtime Winch (Avg)&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mean Validation Time (s)&lt;/td&gt;
&lt;td&gt;4.212&lt;/td&gt;
&lt;td&gt;6.983&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.872&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8.082&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean TPS&lt;/td&gt;
&lt;td&gt;286.31&lt;/td&gt;
&lt;td&gt;325.3&lt;/td&gt;
&lt;td&gt;294.04&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;492.66&lt;sup id="fnref4"&gt;4&lt;/sup&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ledger Count (30 min)&lt;/td&gt;
&lt;td&gt;441&lt;/td&gt;
&lt;td&gt;266&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;480&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;230&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overvalidations&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;217&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;149&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P2P Out of Sync&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Based on these results (best performance, excellent qualitative findings), the RX Programmability team decided to switch to Wasmi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;The RX Programmability team is almost done with migrating all the Smart Escrow code to use Wasmi instead of WAMR. This change will be included in the next Devnet release.&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Pulley is Wasmtime's portable interpreter, it executes a custom, register-based bytecode format generated by the Cranelift compiler. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;Winch is wasmtime's Single-Pass Compiler. It does less optimization during compilation, so the compilation step takes less time than Cranelift, but execution times are longer. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;An overvalidation is when it takes a ledger over 5 seconds to validate. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;Do not be misled by Winch’s high “Mean TPS” (492.66). Combined with its long validation time and very low ledger count, this indicates inconsistent queuing and spiky batch processing, not smooth throughput. Wasmi’s throughput (294.04 TPS) was strong and consistent, aligning with its good validation time and highest ledger count. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>xrp</category>
      <category>xrpl</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Permissioned Domains: Enabling Compliance-Driven Onchain Finance on the XRPL</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Thu, 06 Mar 2025 18:23:33 +0000</pubDate>
      <link>https://dev.to/ripplexdev/permissioned-domains-enabling-compliance-driven-onchain-finance-on-the-xrpl-29k2</link>
      <guid>https://dev.to/ripplexdev/permissioned-domains-enabling-compliance-driven-onchain-finance-on-the-xrpl-29k2</guid>
      <description>&lt;p&gt;The XRP Ledger (XRPL) is introducing new tools to enhance compliance, security, and institutional adoption. One of the most important developments in this space is &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0080-permissioned-domains" rel="noopener noreferrer"&gt;Permissioned Domains (XLS-80)&lt;/a&gt;, a proposed amendment that enables issuers and financial institutions to create controlled environments for blockchain-based transactions.&lt;/p&gt;

&lt;p&gt;Permissioned Domains allow institutions to define access requirements for specific parts of the XRPL, ensuring that only authorized users — those with verifiable credentials — can participate in certain transactions. Permissioned Domains enable other features to become more compliant, representing a major step toward institutional-grade &lt;a href="https://xrpl.org/docs/use-cases/defi" rel="noopener noreferrer"&gt;decentralized finance (DeFi)&lt;/a&gt; by ensuring privacy, regulatory compliance, and controlled asset flows.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are Permissioned Domains?
&lt;/h3&gt;

&lt;p&gt;Permissioned Domains introduce a new on-chain access control mechanism that allow institutions, businesses, and issuers to define rules for participation in specific financial activities. &lt;/p&gt;

&lt;p&gt;More specifically, they enable the creation of controlled environments within a broader system where specific rules and restrictions can be applied to user interactions and asset flows. These rules are recorded directly on the XRPL, enabling domain creators to establish a trusted, transparent framework for their blockchain-based operations, helping traditional financial institutions meet the regulatory requirements they face.&lt;/p&gt;

&lt;p&gt;For example, credential-gating ensures that via a Domain object, institutions can specify which credentials are required for access to their permissioned domain, ensuring compliance with relevant KYC/AML regulations. Permissioned Domains allow for institutional-grade compliance and risk management without relying on external intermediaries or encroaching on privacy. The ledger itself only tracks whether the user’s credential is valid and accepted by the domain.&lt;/p&gt;

&lt;p&gt;For a closer look at Credentials on the XRPL, a feature introduced through &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0070-credentials" rel="noopener noreferrer"&gt;XLS-70&lt;/a&gt; that allows for on-chain identity management and credential verification, you can check out my &lt;a href="https://dev.to/ripplexdev/credentials-building-a-compliant-identity-layer-for-the-xrp-ledger-155e"&gt;recent piece on DevTo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Key Enabler for the Upcoming Permissioned DEX
&lt;/h3&gt;

&lt;p&gt;Permissioned Domains are not just an isolated feature — they serve as the foundation for another major institutional finance upgrade: the Permissioned DEX.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fta1ilxib9a04tomgd1eq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fta1ilxib9a04tomgd1eq.png" alt="Permissioned Domains are the next component toward the " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  What is the Permissioned DEX?
&lt;/h4&gt;

&lt;p&gt;The Permissioned DEX is effectively an evolution of the XRPL’s existing &lt;a href="https://xrpl.org/docs/concepts/tokens/decentralized-exchange" rel="noopener noreferrer"&gt;decentralized exchange (DEX)&lt;/a&gt; that allows only credentialed participants to trade within specific liquidity pools. While the XRPL’s native DEX has provided seamless on-chain trading for years, regulated financial institutions require greater control over who can participate in certain transactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Permissioned Domains Enable the Permissioned DEX:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Restricted Orderbooks:&lt;/strong&gt; Trading pairs on the Permissioned DEX can require users to hold approved credentials (facilitated by Permissioned Domains), ensuring that only authorized participants can place orders.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regulatory Compliance:&lt;/strong&gt; Institutions issuing &lt;a href="https://xrpl.org/docs/use-cases/tokenization/real-world-assets" rel="noopener noreferrer"&gt;tokenized real-world assets (RWAs)&lt;/a&gt; or stablecoins can create private trading environments that comply with financial regulations.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissioned but Decentralized:&lt;/strong&gt; Instead of splitting into separate private blockchains or special authorized tokens, the Permissioned DEX allows regulated institutions to reuse XRPL’s core DEX capabilities — just with added checks to ensure participants belong to the same, credential-gated domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Permissioned Domains, the Permissioned DEX will allow financial institutions to engage in DeFi while meeting compliance requirements, opening the door to regulated secondary markets for tokenized assets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Credentials: A Prerequisite for Permissioned Domains
&lt;/h3&gt;

&lt;p&gt;As outlined in my &lt;a href="https://dev.to/ripplexdev/credentials-building-a-compliant-identity-layer-for-the-xrp-ledger-155e"&gt;earlier blog&lt;/a&gt;, Permissioned Domains build on top of Credentials and DID to facilitate a flexible, institutional-grade identity system on XRPL. Before users can access a Permissioned Domain, they must hold the required Credentials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Credentials Work with Permissioned Domains&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Credential-Gated Membership:&lt;/strong&gt; A domain object can list accepted credentials, such that any account holding any one of those credentials is automatically considered a member.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlined Control:&lt;/strong&gt; Organizations can define requirements (like KYC credentials from a trusted issuer) and manage who joins or transacts within a domain.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy Preservation:&lt;/strong&gt; Rather than upload personal information to the public blockchain or provide it to each platform, users only need to prove they hold a required credential. The network itself only tracks whether the user’s credential is valid and accepted by the domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining Credentials and Permissioned Domains, XRPL ensures on-chain privacy, security, and compliance, making institutional DeFi more accessible and scalable.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How to Vote for Permissioned Domains&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To support the adoption of Permissioned Domains on the XRPL, you can participate in the amendment voting process! &lt;/p&gt;

&lt;p&gt;Refer to the &lt;a href="https://xrpl.org/docs/concepts/networks-and-servers/amendments" rel="noopener noreferrer"&gt;Amendments Guide&lt;/a&gt; for a step-by-step overview of how to vote. &lt;/p&gt;

&lt;p&gt;New to the XRPL? The  guide also explains how the amendment process works and how you can contribute to the network’s evolution.&lt;/p&gt;

</description>
      <category>xrpl</category>
      <category>xrp</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>A Proposed Vision for XRP Ledger Programmability</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Tue, 25 Feb 2025 13:41:28 +0000</pubDate>
      <link>https://dev.to/ripplexdev/a-proposed-vision-for-xrp-ledger-programmability-1gdj</link>
      <guid>https://dev.to/ripplexdev/a-proposed-vision-for-xrp-ledger-programmability-1gdj</guid>
      <description>&lt;p&gt;&lt;em&gt;Authors: &lt;a href="//mailto:mvadari@ripple.com"&gt;Mayukha Vadari&lt;/a&gt;, &lt;a href="//mailto:fuelling@ripple.com"&gt;David Fuelling&lt;/a&gt;, &lt;a href="//mailto:ajitkulkarni@ripple.com"&gt;Ajit Kulkarni&lt;/a&gt;, &lt;a href="//mailto:elee@ripple.com"&gt;Elliot Lee&lt;/a&gt;, &lt;a href="//mailto:pwang@ripple.com"&gt;Peng Wang&lt;/a&gt;, &lt;a href="//mailto:opidskopnyi@ripple.com"&gt;Oleksandr Pidskopnyi&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As &lt;a href="https://ripple.com/insights/expanding-programmability-on-the-xrp-ledger/" rel="noopener noreferrer"&gt;announced in September&lt;/a&gt;, Ripple, in collaboration with the community, is committed to bringing permissionless programmability to the XRP Ledger (XRPL). &lt;/p&gt;

&lt;p&gt;The first step of this initiative was for the authors to conduct &lt;a href="https://dev.to/ripplexdev/a-survey-of-vms-for-xrpl-programmability-eoa"&gt;a survey of VM options&lt;/a&gt; to build a native programmability system, by sourcing input from the broader XRPL community along with other blockchain ecosystems. &lt;/p&gt;

&lt;p&gt;We envision programmability on the XRPL as the glue that seamlessly connects its powerful, native building blocks with the flexibility of custom on-chain business logic. This vision focuses on preserving what makes the XRPL special—its efficiency, reliability, and simplicity—while empowering builders to unlock new possibilities.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Road So Far
&lt;/h1&gt;

&lt;p&gt;While the XRP Ledger’s amendment process allows for careful, collectively-driven updates and provides a secure approach to introducing widely applicable features, this leaves a gap for developers who need to address the bespoke needs of their business but don’t want to (or can’t) drive broad community adoption for a niche use case. The smart contract functionality proposed in this post will offer additional flexibility for these developers by enabling permissionless development in a way that complements the functionality of amendments.&lt;/p&gt;

&lt;p&gt;As a recap, the team’s main considerations for Mainnet programmability are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permissionless by design (i.e. no need for UNL approval for the network to execute user code)
&lt;/li&gt;
&lt;li&gt;Meshes well with XRPL in both design and implementation
&lt;/li&gt;
&lt;li&gt;Easy access to native features/primitives, to build on the XRPL’s powerful building blocks
&lt;/li&gt;
&lt;li&gt;Easy for new developers to learn (e.g. familiar design paradigms)
&lt;/li&gt;
&lt;li&gt;Minimal impact on existing XRPL users and use cases, especially regarding payments, performance, and security
&lt;/li&gt;
&lt;li&gt;Minimal impact to node/validator costs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This initiative’s anti-objectives are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Being exactly the same as some existing design (at the expense of what is best for the XRPL)
&lt;/li&gt;
&lt;li&gt;Replacing XRPL’s existing building blocks with smart contracts (its primitives are a key selling point)
&lt;/li&gt;
&lt;li&gt;A modification to the consensus protocol that would pay validators (out of scope)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over the past few months, we researched several VM options for XRPL programmability, &lt;a href="https://dev.to/ripplexdev/a-survey-of-vms-for-xrpl-programmability-eoa"&gt;published a blog post&lt;/a&gt; with our findings, and reached the conclusion that Web Assembly (WASM) is the best choice for the XRPL because it balances flexibility, performance, and integration ease better than the other options.&lt;/p&gt;

&lt;p&gt;Community feedback has been instrumental in shaping this vision. Developers across a broad variety of projects have shared valuable insights that have helped refine this approach to XRPL programmability. This collaborative process continues as we all work together to create the best path forward.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introducing Extensions: Making XRPL Features Smarter
&lt;/h1&gt;

&lt;p&gt;As &lt;a href="https://x.com/JoelKatz/status/1830869685455528345" rel="noopener noreferrer"&gt;David Schwartz explained a few months ago&lt;/a&gt;, one of the core goals of our approach to programmability is to move carefully and take smaller steps towards programmability, rather than jump straight to it. The first step that we’ve come up with is what we’re calling &lt;strong&gt;Extensions&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Extension?
&lt;/h2&gt;

&lt;p&gt;An “extension” is a small piece of code attached to an XRPL building block, which allows users to add some custom logic to existing primitives. Extensions can be very useful for projects that like the existing features of the XRPL, but need a minor modification to a feature to be able to use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature + Extension = Smart Feature&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A feature with an extension attached will be more efficient, already mostly audited, and easier to use than reinventing the wheel with a completely separate smart contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Smart Features?
&lt;/h2&gt;

&lt;p&gt;One of the XRPL’s biggest strengths lies in its foundational building blocks—primitives like tokens, escrows, and the DEX, which offer secure, robust, native functionality. &lt;em&gt;Smart Features&lt;/em&gt; allow us to lean into these strengths by enhancing what already exists, rather than replacing it. By leveraging the existing toolkit of the XRPL, we can unlock powerful new capabilities while maintaining the simplicity and efficiency the network is known for.&lt;/p&gt;

&lt;p&gt;This approach also eliminates the need to reinvent the wheel when looking to modify existing features. Instead, developers can build on top of a trusted (and audited) foundation, creating their own custom behavior and functionality that integrates seamlessly with the XRPL’s core design. It’s an approach that prioritizes compatibility, allows innovation to accelerate, and ensures that progress is made in harmony with the network’s proven architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smart Escrows: The First Extension
&lt;/h2&gt;

&lt;p&gt;Currently, there are 2 methods of &lt;a href="https://xrpl.org/docs/tutorials/how-tos/use-specialized-payment-types/use-escrows" rel="noopener noreferrer"&gt;releasing an escrow&lt;/a&gt;: time-based (after a certain time has passed) and condition-based (essentially requiring a password for an escrow).&lt;/p&gt;

&lt;p&gt;Smart escrows will allow developers to &lt;strong&gt;write their own custom escrow release conditions&lt;/strong&gt;, building on top of the existing Escrow primitive without needing to rebuild it in a smart contract.&lt;/p&gt;

&lt;p&gt;Some sample use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notary escrow - only a certain account can unlock an escrow
&lt;/li&gt;
&lt;li&gt;Credential-based escrow - an escrow can only be released if the recipient has received a certain credential or NFT
&lt;/li&gt;
&lt;li&gt;Cascading escrows (for real estate) - one escrow can’t be unlocked unless the previous one has
&lt;/li&gt;
&lt;li&gt;Trustless swaps - one escrow can’t be unlocked unless another one has been created
&lt;/li&gt;
&lt;li&gt;“Options” - one escrow can’t be unlocked unless a Price Oracle shows the price of a token at a certain value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read the full spec &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/270" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Smart Feature Ideas
&lt;/h2&gt;

&lt;p&gt;The idea of Smart Features could be applied to any of the building blocks that already exist on the XRPL - not just Escrows. Some possible options we came up with as examples: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smart &lt;a href="https://xrpl.org/docs/concepts/tokens/decentralized-exchange/automated-market-makers" rel="noopener noreferrer"&gt;AMMs&lt;/a&gt;&lt;/strong&gt; could allow AMMs to have custom trading curves.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart &lt;a href="https://xrpl.org/docs/concepts/accounts" rel="noopener noreferrer"&gt;Accounts&lt;/a&gt;&lt;/strong&gt; could incorporate &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/255" rel="noopener noreferrer"&gt;XLS-86d, Firewall&lt;/a&gt; and/or &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/219" rel="noopener noreferrer"&gt;XLS-76d, MinIncomingAmount&lt;/a&gt;, and potentially allow additional WASM code to protect accounts.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart &lt;a href="https://xrpl.org/docs/concepts/tokens/fungible-tokens" rel="noopener noreferrer"&gt;Tokens&lt;/a&gt;&lt;/strong&gt; could allow issuers to perform additional regulatory checks on user transfers.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart &lt;a href="https://opensource.ripple.com/docs/xls-56d-batch-transactions" rel="noopener noreferrer"&gt;Batch transactions&lt;/a&gt;&lt;/strong&gt; could allow users to implement custom AND/OR tree logic for their transactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, any existing XRPL feature could be made smarter via this new paradigm, and new features could be “smart” from the beginning. The world is your oyster!&lt;/p&gt;

&lt;h1&gt;
  
  
  Smart Contracts
&lt;/h1&gt;

&lt;p&gt;Smart Features and Smart Contracts aren’t mutually exclusive. We believe that the XRPL would be best served with both of these elements.&lt;/p&gt;

&lt;p&gt;Having Smart Features means that if an XRPL feature gives you most of what you need, but is missing some small part, you don’t need to completely reinvent the wheel with a Smart Contract, and you still get the benefit of a well-tested, audited, efficient XRPL primitive. On the other hand, Smart Contracts provide more flexibility for features that are completely custom - for example, a new DeFi protocol. &lt;/p&gt;

&lt;p&gt;Some sample use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integration with a new bridging protocol
&lt;/li&gt;
&lt;li&gt;A new DeFi protocol (e.g. derivatives or perpetuals)
&lt;/li&gt;
&lt;li&gt;Issued token staking rewards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our design for Smart Contracts combines the easy-to-learn overall design of EVM smart contracts (addresses + functions) with the familiarity of XRPL transactions. A Smart Contract lives on a &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/191" rel="noopener noreferrer"&gt;pseudo-account&lt;/a&gt; and is triggered via a new &lt;code&gt;ContractCall&lt;/code&gt; transaction, which calls a specific function on the smart contract, with provided parameters. The Smart Contract can modify its own state data, or interact with other XRPL building blocks (including other smart contracts) via submitting its own XRPL transactions from its code.&lt;/p&gt;

&lt;p&gt;Read the full spec &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/271" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  How the XRPL EVM Sidechain Fits In
&lt;/h1&gt;

&lt;p&gt;The XRPL EVM sidechain serves a complementary role to the XRPL, but is not a replacement for mainnet programmability. &lt;/p&gt;

&lt;p&gt;We believe that the XRPL EVM Sidechain is a great opportunity to attract EVM ecosystem developers to the XRPL ecosystem. It can also be used to launch protocols that are not currently possible on the XRPL - especially ones that are already written in Solidity, or specifically require the EVM. This bridged solution, using a &lt;a href="https://crosschain.xrplevm.org/" rel="noopener noreferrer"&gt;cross-chain approach&lt;/a&gt;, is useful if a project requires an alternative form of programmability. &lt;/p&gt;

&lt;h1&gt;
  
  
  Timeline
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Q1: Early devnet for smart escrows
&lt;/li&gt;
&lt;li&gt;Q2: Full-functional Smart Escrow devnet
&lt;/li&gt;
&lt;li&gt;Q3: Release Smart Escrows in an amendment for voting
&lt;/li&gt;
&lt;li&gt;Q4: Smart Contract devnet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting with Smart Escrows (instead of going straight to Smart Contracts) allows us to test out the VM integration with a much smaller feature, so that it’s much easier to protect against unforeseen errors, and any issues will be much smaller and more limited.&lt;/p&gt;

&lt;p&gt;If you’re interested in contributing to this development process, please reach out.&lt;/p&gt;

</description>
      <category>xrpl</category>
      <category>web3</category>
      <category>smartcontract</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Credentials: Building a Compliant Identity Layer for the XRP Ledger</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Fri, 07 Feb 2025 22:33:52 +0000</pubDate>
      <link>https://dev.to/ripplexdev/credentials-building-a-compliant-identity-layer-for-the-xrp-ledger-155e</link>
      <guid>https://dev.to/ripplexdev/credentials-building-a-compliant-identity-layer-for-the-xrp-ledger-155e</guid>
      <description>&lt;p&gt;&lt;a href="https://xrpl.org/docs/concepts/decentralized-storage/credentials" rel="noopener noreferrer"&gt;Credentials&lt;/a&gt; is a new feature that provides a secure, lightweight framework for issuing, managing, and verifying user credentials directly on the XRP Ledger, enabling robust compliance while preserving user privacy. &lt;/p&gt;

&lt;p&gt;Last year, the RippleX team introduced the &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0070d-credentials" rel="noopener noreferrer"&gt;XLS-70 spec&lt;/a&gt; for the XRPL, and it is currently undergoing the amendment voting process as part of the &lt;a href="https://xrpl.org/blog/2024/rippled-2.3.0" rel="noopener noreferrer"&gt;rippled 2.3.0 release&lt;/a&gt;. This article will cover how the feature is built, what it enables, and how it fits into a bigger picture of enabling compliant, &lt;a href="https://ripple.com/insights/the-building-blocks-of-institutional-defi-on-xrp-ledger/" rel="noopener noreferrer"&gt;institutional-grade DeFi on XRPL&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Robust Build&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Credentials are designed to be a lightweight feature and are additive to the recent &lt;a href="https://xrpl.org/docs/concepts/decentralized-storage/decentralized-identifiers" rel="noopener noreferrer"&gt;Decentralized Identity (DID) standard&lt;/a&gt;. The Credentials standard introduces a new &lt;code&gt;Credential&lt;/code&gt; ledger object along with new transaction types for creating, accepting, and deleting credentials. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Credential&lt;/code&gt; ledger object&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Stores basic details about a credential such as issuer, subject, credential type, optional expiration, and URI.
&lt;/li&gt;
&lt;li&gt;A flag (&lt;code&gt;lsfAccepted&lt;/code&gt;) indicates whether the subject has accepted it. Before acceptance, the issuer maintains the reserve; after acceptance, the subject does.
&lt;/li&gt;
&lt;li&gt;A credential is considered “valid” if it has been accepted by the subject and is not expired.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extended Deposit Authorization flow&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://xrpl.org/docs/concepts/accounts/depositauth" rel="noopener noreferrer"&gt;Deposit Authorization&lt;/a&gt; is an optional feature that blocks direct incoming payments from unknown senders, requiring explicit preauthorization or self-initiated transactions to receive funds. Entities may comply with regulations that require knowledge and control over inbound transactions.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://xrpl.org/docs/references/protocol/transactions/types/depositpreauth" rel="noopener noreferrer"&gt;&lt;code&gt;DepositPreauth&lt;/code&gt;&lt;/a&gt; is an existing object type that allows an account requiring deposit authorization to explicitly preauthorize specific sending addresses to send direct payments. Essentially, it acts as a whitelisting capability for deposit authorization.
&lt;/li&gt;
&lt;li&gt;With Credentials, &lt;code&gt;DepositPreauth&lt;/code&gt; is extended to allow specifying credentials rather than only individual accounts, meaning an account may require incoming transactions to provide valid credentials (e.g. KYC status) issued by one or more trusted issuers.
&lt;/li&gt;
&lt;li&gt;Internally, &lt;code&gt;DepositPreauth&lt;/code&gt; objects can now hold an array of (&lt;code&gt;Issuer&lt;/code&gt;, &lt;code&gt;CredentialType&lt;/code&gt;) pairs in place of an account. A transaction must include the specified credentials to be authorized.
&lt;/li&gt;
&lt;li&gt;Transactions that require showing credentials include a &lt;code&gt;CredentialIDs&lt;/code&gt; field listing the valid credential object IDs. The ledger checks those objects to confirm validity, issuer, subject, and expiration before allowing the transaction.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;New Transaction Types&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;CredentialCreate&lt;/code&gt;: An issuer creates a credential ledger object on the XRPL, specifying the subject, credential type, optional expiration, and related data.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CredentialAccept&lt;/code&gt;: The subject uses this transaction to “accept” the credential, flipping the &lt;code&gt;lsfAccepted&lt;/code&gt; flag and transferring its reserve burden from the issuer to the subject.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CredentialDelete&lt;/code&gt;: Either the issuer or the subject can delete a credential at any time. Anyone can delete it if the credential has expired.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Immediate Use Cases&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Upon activation, developers may utilize the &lt;code&gt;Credentials&lt;/code&gt; feature to streamline user onboarding processes. It will first work with Deposit Authorization, where senders can be automatically approved, instead of a manual process. Credentials can also be used to authorize off-ledger activities in association with a decentralized identifier. &lt;/p&gt;

&lt;p&gt;Because the robust design of Credentials combines on-ledger credential objects, enhanced &lt;code&gt;DepositPreauth&lt;/code&gt; checks, and specialized transaction types, it allows for issuing, accepting, revoking, and using credentials directly on XRPL without exposing personal data. Essentially, privacy is an embedded use case within the design of this feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Broader Implications&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Credentials can be thought of as a modular building block to DID. It can be applied to attest to some criteria (e.g. KYC) for a user and issued to their DID. This may create an important foundation for enabling a smooth onboarding process when accessing products like &lt;a href="https://xrpl.org/docs/use-cases/tokenization/real-world-assets" rel="noopener noreferrer"&gt;tokenized RWAs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7vcf022nmtmlzcplrff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7vcf022nmtmlzcplrff.png" alt="Image description" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two additional features on the RippleX team’s roadmap, &lt;a href="https://github.com/XRPLF/XRPL-Standards/blob/master/XLS-0080d-permissioned-domains/README.md" rel="noopener noreferrer"&gt;Permissioned Domains&lt;/a&gt; and a &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/229" rel="noopener noreferrer"&gt;Permissioned DEX&lt;/a&gt;, may build on top of Credentials and DID to facilitate a flexible, institutional grade identity system on XRPL:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Permissioned Domains&lt;/strong&gt; is a protocol that enables an entity such as a financial institution to create a controlled environment on XRPL that requires specified credentials for access. Here are a few ways this can work with the Credentials feature:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Credential-Gated Membership&lt;/strong&gt;: A domain object can list accepted credentials, such that any account holding any one of those credentials is automatically considered a member.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlined Control&lt;/strong&gt;: Organizations can define requirements (like KYC credentials from a trusted issuer) and manage who joins or transacts within a domain.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy Preservation&lt;/strong&gt;: Rather than upload personal information, users only prove they hold a required credential. The ledger itself only tracks whether the user’s credential is valid and accepted by the domain.
&lt;/li&gt;
&lt;li&gt;Additionally, Permissioned Domains will enable a Permissioned DEX and could be used with the upcoming lending protocol.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Permissioned DEX&lt;/strong&gt; is a protocol that extends the XRPL’s built-in &lt;a href="https://xrpl.org/docs/concepts/tokens/decentralized-exchange" rel="noopener noreferrer"&gt;decentralized exchange (DEX)&lt;/a&gt; to operate in a controlled environment, where creating or filling orders requires specified credentials.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Restricted Orderbooks&lt;/strong&gt;: An offer tagged with a domain ID can only be matched by other offers from accounts within the same domain who also hold valid credentials.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regulatory Compliance&lt;/strong&gt;: Institutions can trade on the XRP Ledger’s DEX while enforcing AML/KYC rules. Only properly credentialed accounts in the same domain can interact with one another on that orderbook.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controlled but Still Decentralized&lt;/strong&gt;: Instead of splitting into separate private blockchains or specialized tokens, the Permissioned DEX reuses XRPL’s core DEX capabilities—just with added checks to ensure participants belong to the same, credential-gated domain.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Taken together, DIDs serve as a foundational “fingerprint” for each user, while Credentials provide the identity and compliance layer required for different scenarios. Building on these foundations, Permissioned Domains and Permissioned DEX protocols enforce membership and compliance rules by requiring the appropriate DID-based Credentials, all while preserving the decentralized nature of the XRPL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Vote for the Credentials Amendment&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
To support the adoption of Credentials on the XRPL, you can participate in the amendment voting process!&lt;/p&gt;

&lt;p&gt;Refer to the &lt;a href="https://xrpl.org/docs/concepts/networks-and-servers/amendments" rel="noopener noreferrer"&gt;Amendments Guide&lt;/a&gt; for a step-by-step overview of how to vote.&lt;br&gt;&lt;br&gt;
New to XRPL? This guide also explains how the amendment process works and how you can contribute to the network’s evolution.&lt;/p&gt;

&lt;p&gt;For more information and updates, visit the &lt;a href="https://xrpl.org/docs/concepts/decentralized-storage/credentials" rel="noopener noreferrer"&gt;XRPL Credentials Overview&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>xrpl</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>identity</category>
    </item>
    <item>
      <title>A Survey of VMs for XRPL Programmability</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Mon, 27 Jan 2025 20:37:01 +0000</pubDate>
      <link>https://dev.to/ripplexdev/a-survey-of-vms-for-xrpl-programmability-eoa</link>
      <guid>https://dev.to/ripplexdev/a-survey-of-vms-for-xrpl-programmability-eoa</guid>
      <description>&lt;p&gt;There is a growing demand for permissionless programmability on the XRP Ledger. This kind of programmability will give developers the flexibility to securely implement complex scenarios in on-chain, user-deployed code, without needing permission from anyone (such as a UNL quorum).&lt;/p&gt;

&lt;p&gt;To this end, the Programmability team at RippleX has been hard at work over the last few months researching different smart contract systems that exist in the broader crypto ecosystem. This blog post outlines our preliminary findings and also details what we believe to be the best VM solution for the future of XRPL programmability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;We started by researching possible solutions to the programmability question, to determine what was even remotely worth considering, and which designs seemed to match our goals at a first look. We called this “Phase 1”.&lt;/p&gt;

&lt;p&gt;We then narrowed down the list of VMs to the most promising three options, and created some simple proofs-of-concept integrating those into rippled (the software that the XRPL runs on), to determine what was most feasible from a more technical perspective (“Phase 2”).&lt;/p&gt;

&lt;p&gt;This post will provide an update on both Phases 1 and 2.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: this blog post only addresses the applicability of different VMs to XRPL programmability, and does not handle other design considerations, such as gas and storage mechanisms. We'll share our thoughts on those topics in a follow-up post.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Overall Design Objectives
&lt;/h3&gt;

&lt;p&gt;The main goals we have for programmability on the XRPL are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Permissionless by design (i.e. no need for UNL approval for the network to execute user code)
&lt;/li&gt;
&lt;li&gt;Meshes well with the XRPL, both design- and implementation-wise
&lt;/li&gt;
&lt;li&gt;Easy access to native features/primitives, to build on the XRPL’s powerful building blocks
&lt;/li&gt;
&lt;li&gt;Easy for new developers to learn (e.g. familiar design paradigms)
&lt;/li&gt;
&lt;li&gt;Minimal impact to existing XRPL users/use-cases, especially with regard to payments, performance, and security
&lt;/li&gt;
&lt;li&gt;Minimal impact to node/validator costs&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Phase 1: Discovery Research
&lt;/h2&gt;

&lt;p&gt;As part of our discovery process, we considered the following technologies (including possibly modifying them to meet the needs of the XRPL). We also spoke extensively with developers from many of these communities to gather their input.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hooks
&lt;/li&gt;
&lt;li&gt;Stellar (Soroban)
&lt;/li&gt;
&lt;li&gt;EVM
&lt;/li&gt;
&lt;li&gt;Solana
&lt;/li&gt;
&lt;li&gt;Aptos/Sui (Move)
&lt;/li&gt;
&lt;li&gt;TON
&lt;/li&gt;
&lt;li&gt;NEAR
&lt;/li&gt;
&lt;li&gt;BitVM
&lt;/li&gt;
&lt;li&gt;RISC-V
&lt;/li&gt;
&lt;li&gt;L2s/Sidechains&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Phase 1 Evaluation Criteria
&lt;/h4&gt;

&lt;p&gt;In this first phase, we only considered a subset of the design objectives listed above (namely, those that were easier to investigate without needing to build a proof-of-concept):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Permissionless
&lt;/li&gt;
&lt;li&gt;Meshes well with the XRPL, design-wise (especially its account-based model)
&lt;/li&gt;
&lt;li&gt;Easy integration with native features
&lt;/li&gt;
&lt;li&gt;Easy learning for new developers
&lt;ol&gt;
&lt;li&gt;Use familiar development models&lt;/li&gt;
&lt;li&gt;Ecosystem adoption (looking at the broader crypto ecosystem) - as a partial proxy for ease of learning&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Hooks
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hooks.xrpl.org/" rel="noopener noreferrer"&gt;Hooks&lt;/a&gt; are small pieces of code that are installed on an account. They are triggered by incoming and outgoing transactions and can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Block an incoming or outgoing transaction
&lt;/li&gt;
&lt;li&gt;Modify an outgoing transaction
&lt;/li&gt;
&lt;li&gt;Create and send a new, additional transaction&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;Hooks was originally designed for the XRPL, and already exists in one form on Xahau, where it has been in production for more than a year.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Via transaction emission.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as JSHooks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Xahau is the only chain that supports Hooks, and it is still very new.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided to move Hooks onto the next step.&lt;/strong&gt; Since Hooks was designed for the XRPL, it easily passed many of the criteria that we were evaluating at this step. The main two sticking points were ease of learning for new developers (due to needing to know the C programming language) and low ecosystem adoption, but these factors were not enough of a concern to stop it from moving onto the next stage of evaluation.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Stellar (Soroban)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://stellar.org/soroban" rel="noopener noreferrer"&gt;Soroban&lt;/a&gt; is the smart contracts platform on the Stellar network. Soroban Contracts are small programs written in the &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;Rust programming language&lt;/a&gt; and compiled as &lt;a href="https://en.wikipedia.org/wiki/WebAssembly" rel="noopener noreferrer"&gt;WebAssembly (WASM)&lt;/a&gt; for deployment.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;Stellar and the XRPL are very similar in their overall architecture - for example, both are account-based and use trustlines. As a result, it may be easy enough to port Soroban to the XRPL.&lt;/p&gt;

&lt;h4&gt;
  
  
  Notes
&lt;/h4&gt;

&lt;p&gt;There does not appear to be a way to interact with Stellar-native features from a Soroban smart contract. For example, in order to get assets to work with a smart contract, you need a &lt;a href="https://developers.stellar.org/docs/tokens/stellar-asset-contract" rel="noopener noreferrer"&gt;Stellar Asset Contract&lt;/a&gt; (SAC) that pairs with it and stores the smart contract asset balances. These are &lt;a href="https://developers.stellar.org/docs/build/guides/cli/deploy-stellar-asset-contract" rel="noopener noreferrer"&gt;deployed&lt;/a&gt; like normal smart contracts. In addition, there is no way to access ledger object data unless it’s the data stored in the contract (with the exception of the SAC, which can access trustline balances), and no way to integrate with a Stellar-native AMM without something off-chain or special wrapper logic.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as adding additional APIs (known as “&lt;a href="https://wasmedge.org/docs/embed/c/host_function/" rel="noopener noreferrer"&gt;host functions&lt;/a&gt;” in WASM).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Soroban contracts are somewhat difficult to read for someone who is new to the ecosystem.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Stellar and the XRPL are very similar in architecture.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;While Soroban was designed to be used by other blockchains as well, the 10 years of divergence between Stellar and the XRPL will likely still make integration somewhat difficult.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Electric Capital’s Developer Report doesn’t show many Stellar developers.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided not to proceed with Soroban.&lt;/strong&gt; Soroban fails our criteria in two key places: Ecosystem Adoption and Native Feature Access. The lack of native feature access essentially counteracts the benefits of Stellar’s similarities to the XRPL.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. EVM
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://ethereum.org/en/developers/docs/evm/" rel="noopener noreferrer"&gt;Ethereum Virtual Machine&lt;/a&gt; is a smart contract VM used on many different chains, but started on the Ethereum network. Contracts are written in &lt;a href="https://soliditylang.org/" rel="noopener noreferrer"&gt;Solidity&lt;/a&gt;, which was developed specifically for the EVM. &lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;The EVM is by far the most popular development stack in the crypto ecosystem.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as adding &lt;a href="https://www.evm.codes/precompiled" rel="noopener noreferrer"&gt;precompiles&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Solidity is the most popular smart contract language.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;The EVM idea of unique contract addresses is roughly analogous to the XRPL’s &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/191" rel="noopener noreferrer"&gt;pseudo-accounts&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;The VM is a standalone module, but was never designed to be integrated with something as different as the XRPL, so there will likely be difficulties.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.developerreport.com/" rel="noopener noreferrer"&gt;Electric Capital’s Developer Report&lt;/a&gt; shows it as by far the most popular development stack&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided to move the EVM onto the next step.&lt;/strong&gt; Given its popularity and ease of use, the EVM easily passes this round of evaluation. The biggest questions are about whether you would be able to access native features, and how well the code would integrate with rippled.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Solana
&lt;/h3&gt;

&lt;p&gt;On Solana, contracts (which are called “&lt;a href="https://solana.com/docs/core/programs" rel="noopener noreferrer"&gt;programs&lt;/a&gt;”) are written in the &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;Rust programming language&lt;/a&gt;. Solana’s on-chain programs are compiled via the &lt;a href="https://llvm.org/" rel="noopener noreferrer"&gt;LLVM compiler infrastructure&lt;/a&gt; to an &lt;a href="https://en.wikipedia.org/wiki/Executable_and_Linkable_Format" rel="noopener noreferrer"&gt;Executable and Linkable Format (ELF)&lt;/a&gt; containing a variation of the &lt;a href="https://en.wikipedia.org/wiki/Berkeley_Packet_Filter" rel="noopener noreferrer"&gt;Berkeley Packet Filter (BPF)&lt;/a&gt; bytecode.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;Solana is the second most popular smart contract stack for crypto developers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as adding &lt;a href="https://docs.anza.xyz/runtime/programs/" rel="noopener noreferrer"&gt;native programs&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;The tooling ecosystem is relatively mature, and Rust is a fairly popular programming language.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;The contract data is stored in a separate account from the executable, which doesn’t mesh very well with the way the XRPL uses accounts (accounts store their own data, or data is stored in other ledger objects).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;The VM isn’t a standalone module, so it would have to be extracted from the Solana codebase before it could be added to rippled.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.developerreport.com/" rel="noopener noreferrer"&gt;Electric Capital’s Developer Report&lt;/a&gt; shows it as the second-most popular development stack.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided not to proceed with SolVM&lt;/strong&gt;. This is mainly because they have a very different system of transactions, and making the conversion would likely be too difficult. In addition, the Solana VM is embedded into their server code, and would be difficult to extract.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Aptos/Sui (Move)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://aptos.dev/en/network/blockchain/move" rel="noopener noreferrer"&gt;Move&lt;/a&gt; is a very high-performance, memory-safe, parallel-execution capable VM that currently powers smart contracts on the Aptos &amp;amp; Sui chains.&lt;/p&gt;

&lt;p&gt;This evaluation focused on the Aptos version of Move.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;Move smart contracts are gaining in popularity. In addition, its ability to handle parallel execution of transactions is intriguing and could potentially benefit the XRPL performance-wise in the future if the XRPL were to adopt it.&lt;/p&gt;

&lt;p&gt;Aptos’s version of Move was chosen instead of Sui’s because Aptos has an account-based model (like the XRPL), which would likely be easier to port to the XRPL.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as adding host functions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It has a very steep learning curve, but is nice to work with once that is overcome.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It is also an account-based system with a reserve-like method of storage rent. Interestingly, they have a unique method of contract data storage, where the user holds their data, instead of the contract account.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;The VM isn’t a standalone module, so it would have to be extracted from the Aptos codebase before it could be added to rippled.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.developerreport.com/" rel="noopener noreferrer"&gt;Electric Capital’s Developer Report&lt;/a&gt; shows that it has a solid developer base, but not near the top.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided to move Move onto the next step.&lt;/strong&gt; The memory-safe and parallel execution nature of the Move VM make it very intriguing when thinking about how the XRPL can improve in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. TON
&lt;/h3&gt;

&lt;p&gt;The TON blockchain has its own custom smart contract implementation, written in the &lt;a href="https://docs.ton.org/v3/documentation/smart-contracts/overview#-func" rel="noopener noreferrer"&gt;FunC programming language&lt;/a&gt; and using the &lt;a href="https://docs.ton.org/v3/documentation/smart-contracts/overview#ton-virtual-machine-tvm" rel="noopener noreferrer"&gt;TON Virtual Machine (TVM)&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;The TON VM is intended to handle large numbers of smaller transactions, which may mesh with the XRPL’s method of processing via independent transactions, rather than larger smart contract functions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as adding additional APIs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://docs.ton.org/v3/documentation/smart-contracts/func/overview" rel="noopener noreferrer"&gt;FunC&lt;/a&gt; is difficult to learn, but they have a higher-level language, &lt;a href="https://docs.tact-lang.org/" rel="noopener noreferrer"&gt;Tact&lt;/a&gt;, that’s easier to use.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It emphasizes small, modular contracts, but uses TON types all the way down.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;The TVM uses TON types all the way down - for example, integers are signed 257 bits in TON, so each XRPL integer would need to be converted to that format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.developerreport.com/" rel="noopener noreferrer"&gt;Electric Capital’s Developer Report&lt;/a&gt; doesn’t show many TON developers.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided not to proceed with TON.&lt;/strong&gt; This is mainly due to the fact that the TON VM uses TON types all the way down, and this would likely be difficult to work with.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. NEAR
&lt;/h3&gt;

&lt;p&gt;The NEAR blockchain/platform (launched in October 2020) supports smart contracts written in Rust and TypeScript which are compiled to WebAssembly (WASM) for deployment. NEAR uses proof-of-stake consensus.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;NEAR is another blockchain that uses WASM, and is also account-based. It also has claims of a unique sharding mechanism (Nightshade) intended to support 1000+ TPS, which could be useful for the XRPL’s performance in the future.&lt;/p&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as adding additional APIs (known as “&lt;a href="https://wasmedge.org/docs/embed/c/host_function/" rel="noopener noreferrer"&gt;host functions&lt;/a&gt;” in WASM).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Rust and TypeScript are fairly easy to learn, but the smart contracts use some unusual decorators.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;NEAR also uses an account-based model for asset holdings.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;NEAR uses different data types.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.developerreport.com/" rel="noopener noreferrer"&gt;Electric Capital’s Developer Report&lt;/a&gt; shows that it has a solid developer base, but not near the top&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided to move NEAR onto the next step&lt;/strong&gt;, since we already had WASM on the list.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. BitVM
&lt;/h3&gt;

&lt;p&gt;BitVM is a conceptual framework that leverages Bitcoin’s limited &lt;a href="https://en.bitcoin.it/wiki/Script" rel="noopener noreferrer"&gt;scripting&lt;/a&gt; language to enable Turing-complete Bitcoin contracts without modifying the network's consensus rules. The main idea is to compile a program into a Boolean circuit and commit it in a &lt;a href="https://bitcoinops.org/en/topics/taproot/" rel="noopener noreferrer"&gt;Taproot&lt;/a&gt; address. &lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;Neither Bitcoin nor the XRPL support Turing-complete smart contracts. As a result, BitVM is an interesting area of exploration because it offers the promise of programmability (with minimal changes to the XRPL), by using off-chain Turing-complete computation that can be verified by a much simpler computation layer on the main blockchain. &lt;/p&gt;

&lt;h4&gt;
  
  
  Notes
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Representing a general-purpose computation on the XRPL is challenging. The XRPL does not have the capability to represent a computation as a NAND gate circuit, for example.
&lt;/li&gt;
&lt;li&gt;BitVM is stateless, and therefore uses the Lamport signature scheme to commit Boolean circuits for state transition. The XRPL does not currently support this.
&lt;/li&gt;
&lt;li&gt;Further fraud-proof and dispute-resolution mechanisms are required if a BitVM solution is selected. &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some heavy modifications, as new machine instructions would need to be added and a fraud-proof mechanism would be required.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Developers have to do everything at the machine instruction level - there is no higher-level language.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It is designed for a UTXO blockchain, which the XRPL is not.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;BitVM has dependents that make integration difficult, such as the Lamport signature scheme.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It is only used on Bitcoin, but Bitcoin is a very popular chain.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided not to proceed with BitVM&lt;/strong&gt;, since our research showed that it didn’t mesh well from a design or implementation perspective.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. RISC-V
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/RISC-V" rel="noopener noreferrer"&gt;RISC-V&lt;/a&gt; is an emerging CPU instruction-set architecture that can be used to execute blockchain computation.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;RISC-V is register-based rather than stack-based as in WASM, which makes RISC-V more efficient.&lt;/li&gt;
&lt;li&gt;RISC-V only contains ~40-50 instructions, while WASM has more than 200 instructions.
&lt;/li&gt;
&lt;li&gt;RISC-V is hardware-friendly and more suitable for resource-constrained devices.
&lt;/li&gt;
&lt;li&gt;RISC-V has built-in crypto support, which makes ZK proof generation and verification more efficient. &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Evaluation Results
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Satisfies?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permissionless&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ztqguz8a3wwjbb9xx9j.png" alt="Green dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native Feature Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Yes, with some modifications, such as adding additional APIs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It is still a very nascent VM.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Meshes Well with XRPL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;Since RISC-V is its own independent VM, it should be easy enough to customize it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of rippled Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx57545m39mb0y0sb1gue.png" alt="Yellow dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It would be a similar level of integration as WASM.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem Adoption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjqq41nib1j6k7vzkle5.png" alt="Red dot" width="47" height="34"&gt;&lt;/td&gt;
&lt;td&gt;It is still very nascent, and projects are only starting to use it.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;We decided not to proceed with RISC-V&lt;/strong&gt;, mainly due to its current maturity level. We plan to monitor RISC-V VM development in the blockchain ecosystem and will consider it as an alternative/additional solution for XRPL programmability in the future. For example, &lt;a href="https://github.com/nervosnetwork/ckb-vm" rel="noopener noreferrer"&gt;Nervos&lt;/a&gt;, &lt;a href="https://forum.polkadot.network/t/announcing-polkavm-a-new-risc-v-based-vm-for-smart-contracts-and-possibly-more/3811" rel="noopener noreferrer"&gt;Polkadot&lt;/a&gt;, and &lt;a href="https://verified-zkevm.org/" rel="noopener noreferrer"&gt;Ethereum&lt;/a&gt; are all in the process of developing RISC-V based projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Layer 2s and Sidechains
&lt;/h3&gt;

&lt;p&gt;The two main examples considered here were rollups and sidechains.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why This Was Investigated
&lt;/h4&gt;

&lt;p&gt;L2 roll-ups provide parallel scalability and can be customized to fit a diverse set of application needs. Their safety comes from the mainnet (L1), and the safety of the mechanism connecting each roll-up to its L1 is guaranteed by each roll-up protocol.&lt;/p&gt;

&lt;h4&gt;
  
  
  Roll-Ups
&lt;/h4&gt;

&lt;p&gt;L2 roll-ups provide parallel scalability and can be customized to fit a diverse set of application needs. Their safety comes from the Layer-1 (L1) mainnet, and the safety of the bridges between the roll-ups and their L1s is guaranteed by each roll-up protocol.&lt;/p&gt;

&lt;p&gt;We investigated both Optimistic and ZK roll-ups.&lt;/p&gt;

&lt;h5&gt;
  
  
  Evaluation Results
&lt;/h5&gt;

&lt;p&gt;There are several practical issues impeding the addition of roll-ups as a native primitive to the current XRPL:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The XRPL would need to add ~10 new &lt;a href="https://xrpl.org/resources/contribute-code/create-custom-transactors" rel="noopener noreferrer"&gt;transactors&lt;/a&gt;, for bridging between the mainnet and any roll-up, and additional native support beyond this would be required to verify ZK proofs.
&lt;/li&gt;
&lt;li&gt;XRPL does not have the appropriate logic and/or libraries to verify ZK proofs yet. Adding these would require significant testing and integration before being safely added to the XRPL.

&lt;ul&gt;
&lt;li&gt;The zkVM libraries and several other projects we investigated are not yet production-ready. For example, they are in various stages of development (alpha, beta, or even still just a prototype).
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Proving a ZK roll-up is very computationally expensive, so more research is needed to enable this to work in the confines of the current consensus model.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: Full permissionless programmability on the XRPL would make roll-ups a more practical solution because the infrastructure required to support them on-chain could be implemented in smart contracts, instead of transactors.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Other Networks (e.g. Sidechains)
&lt;/h4&gt;

&lt;p&gt;We discounted the concept of XRPL sidechains (or other networks connected to XRPL via a bridge) as a solution because bridges are too inefficient for any effective native programmability solution. As an example, it is very difficult to interact with XRPL-native features from inside a smart contract on a different chain.&lt;/p&gt;

&lt;p&gt;Despite our choice above, sidechains still very much have their place in the XRPL ecosystem. For example, the XRPL EVM Sidechain provides EVM support for those who need a completely EVM-based solution, which would never be possible on the XRPL, due to the XRPL having a very different implementation and structure from any EVM chain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1 Conclusions
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdcur6u8rtb5x7qsx63c6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdcur6u8rtb5x7qsx63c6.png" alt="Image description" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To summarize: we advanced WASM, MoveVM, and EVM to the next phase.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 2: A Deeper Dive
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Phase 2 focused on VMs&lt;/strong&gt; rather than ecosystems or smart contract designs. This is because choosing a specific VM is independent from what the eventual smart contract design on the XRPL might look like. &lt;/p&gt;

&lt;p&gt;For every VM studied in Phase 2, we attempted to integrate it into rippled and build a very simple proof-of-concept of what that might look like. The options that passed the initial Phase 1 round of review and made it to the final cut were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WASM (e.g. Hooks, NEAR)
&lt;/li&gt;
&lt;li&gt;Move (Aptos-style)
&lt;/li&gt;
&lt;li&gt;EVM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The considerations in the deeper dive were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compatibility with the rippled codebase
&lt;/li&gt;
&lt;li&gt;Ease of embedding into the rippled codebase
&lt;/li&gt;
&lt;li&gt;Ability to read and write from XRPL ledger state
&lt;/li&gt;
&lt;li&gt;Performance impact&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  WebAssembly (WASM)
&lt;/h3&gt;

&lt;p&gt;Similar to Solidity/EVM, WASM-based smart contract runtimes are deterministic, secure, and portable. In addition, WASM promises better performance, and supports many general-purpose programming languages (in other words, a Web2 developer may not have to learn a new language). With those benefits, WASM is the most popular smart contract language choice of many of the newer blockchain projects, such as Polkadot, Cosmos, Near, and most recently Soroban on Stellar.&lt;/p&gt;

&lt;p&gt;We built a simple prototype with limited functionality. The prototype can store the smart contract Wasm code as part of a ledger object. The smart contract functions can be invoked by transactions. Once invoked, our POC processes the transaction and the ledger object, and stores data to a small storage attached to the smart contract. &lt;/p&gt;

&lt;p&gt;Compared to Solidity/EVM, which was purposely built for smart contracts, WASM is general purpose and targets web2 developers. This provides more flexibility when integrating into a blockchain, but it also requires additional work to add or modify components, such as the storage interface and gas measurement mechanism. Fortunately, there are enough other blockchain projects that have already implemented WASM-based programmability solutions that we can look to for possible solutions on how to solve those problems.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Move
&lt;/h3&gt;

&lt;p&gt;It took some time to learn Move and the associated tooling, but the experience of developing in Move was pleasant. However, &lt;strong&gt;we decided not to advocate for integrating it into the XRPL mainnet&lt;/strong&gt; due to some practical concerns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The standalone MoveVM is easily extracted into rippled, but the VM alone is not useful without additional library support. In the Aptos case, these extended Move libraries are not well isolated from the Aptos codebase itself, making it difficult to incorporate the overall VM into rippled.
&lt;/li&gt;
&lt;li&gt;To understand the effort in integrating Aptos’ MoveVM, we tried to build a prototype that simulates the interaction of rippled with the MoveVM. Unfortunately, the Aptos code base was not stable, likely due to the introduction of Move 2, which inhibits our ability to fully consider this as a viable option in the short-term.

&lt;ul&gt;
&lt;li&gt;The prototype imported too much code from Aptos code base. The imported code was “internal” to another project, it was not easy to understand and was hard to tell which was by design that less likely to change and which was implementation detail.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;The XRPL’s rich set of native objects would need to be translated into objects that can be understood by the MoveVM, but this effort would be non-trivial.&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  EVM
&lt;/h3&gt;

&lt;p&gt;EVM is the world’s first blockchain smart contract VM. Its programming language, Solidity, is still the most popular smart contract language. We created a prototype that hosted an EVM. The host prototype interacts with the EVM by providing storage for storing code and data, and by publishing smart contract bytecode to the EVM and later invoking the contract. The library we used, &lt;a href="https://github.com/bluealloy/revm" rel="noopener noreferrer"&gt;revm&lt;/a&gt;, was very easy to work with, and we had a similarly positive experience with associated tooling, reflecting the mature state of the EVM ecosystem.&lt;/p&gt;

&lt;p&gt;However, &lt;strong&gt;we decided not to advocate for integrating it into the XRPL mainnet&lt;/strong&gt; for the following reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We wouldn't be able to support many Ethereum RPCs because tooling (for code development, or wallets for example) would need to be changed, resulting in both rippled development work, tooling work, and a steeper smart contract developer learning curve, which would likely delay overall adoption.
&lt;/li&gt;
&lt;li&gt;The changes we’d have to make to the EVM to enable it to work in the XRPL would remove many of the great benefits of the EVM (e.g. tooling, copy-paste-ability of contracts, etc.)
&lt;/li&gt;
&lt;li&gt;Hypothesis: The ostensible benefit of choosing EVM is easy copy-pasting of existing Solidity code. However, existing Solidity code doesn’t know anything about the XRPL (addresses, signatures, objects, etc.). So, to allow this sort of copy-pasting into the rippled version of EVM, we would have to abandon many XRPL primitives, which we see as a core strength of the XRPL.

&lt;ul&gt;
&lt;li&gt;Likewise, this approach would not be beneficial to EVM developers as they would have to rewrite their smart contracts to use XRPL primitives.
&lt;/li&gt;
&lt;li&gt;The XRPL ecosystem already has a planned sidechain with EVM capabilities (the XRPL EVM Sidechain). That will be a more optimal option for Solidity developers, since it will be a standard EVM environment to build in.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Phase 2 Conclusions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Given our findings in Phase 2 (outlined in the table below), we propose that the VM choice for XRPL programmability is based on WASM.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pzirdni7qwnfxgdd6nm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pzirdni7qwnfxgdd6nm.png" alt="Image description" width="777" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;Stay tuned for a second blog post outlining our proposed vision for programmability on the XRPL, as well as a couple of XLS specs!&lt;/p&gt;

</description>
      <category>web3</category>
      <category>xrpl</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>EVM Sidechain Devnet is Now Available for Testing and Development</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Mon, 26 Jun 2023 17:11:06 +0000</pubDate>
      <link>https://dev.to/ripplexdev/evm-sidechain-devnet-is-now-available-for-testing-and-development-3ec8</link>
      <guid>https://dev.to/ripplexdev/evm-sidechain-devnet-is-now-available-for-testing-and-development-3ec8</guid>
      <description>&lt;p&gt;As of June 26, the &lt;a href="https://dev.to/ripplexdev/an-evm-sidechain-for-the-xrp-ledger-1pbi"&gt;EVM sidechain for the XRP Ledger&lt;/a&gt; is available on a new version of Devnet (v2). This new version features a decentralized bridge design using the &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/92"&gt;XLS-38d specification&lt;/a&gt; and supports XRP, IOU, and ERC-20 token transfers in both directions between the XRP Ledger and EVM sidechain. This EVM sidechain uses a Proof of Authority (PoA) consensus mechanism. Developers are encouraged to test the new functionality of the Devnet v2, as well as the functionality of the bridge using all supported token types.&lt;/p&gt;

&lt;p&gt;Connect to the new version of the EVM sidechain here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: EVM Sidechain&lt;/li&gt;
&lt;li&gt;RPC URL: &lt;a href="https://rpc-evm-sidechain.xrpl.org"&gt;https://rpc-evm-sidechain.xrpl.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Network identifier: 1440002&lt;/li&gt;
&lt;li&gt;Digital Asset: XRP&lt;/li&gt;
&lt;li&gt;EVM Block Explorer URL: &lt;a href="https://evm-sidechain.xrpl.org"&gt;https://evm-sidechain.xrpl.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bridge URL: &lt;a href="https://bridge.devnet.xrpl.org"&gt;https://bridge.devnet.xrpl.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For support, updated documentation is available at &lt;a href="https://opensource.ripple.com/docs/evm-sidechain/intro-to-evm-sidechain/"&gt;opensource.ripple.com&lt;/a&gt;. Developers are also welcome to engage in the &lt;a href="https://discord.gg/sfX3ERAMjH"&gt;XRPL developer Discord&lt;/a&gt;, which has a dedicated &lt;code&gt;EVM-sidechain&lt;/code&gt; channel.&lt;/p&gt;

&lt;p&gt;Full list of updates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;EVM Sidechain:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Improved block time from 5.4 to 3.5 s/block&lt;/li&gt;
&lt;li&gt;Improved chain performance upgrading Tendermint to Comet BFT consensus algorithm&lt;/li&gt;
&lt;li&gt;Implemented PoA validator election mechanism&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explorer:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Improved Sidechain Block Explorer, now including smart contract verification&lt;/li&gt;
&lt;li&gt;Developed &lt;a href="https://cosmos-explorer-evm-sidechain.peersyst.tech/xrp"&gt;Explorer on the Cosmos layer&lt;/a&gt; (in progress)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bridge:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Included Faucet support to facilitate onboarding (for XRP &lt;em&gt;and&lt;/em&gt; tokens)&lt;/li&gt;
&lt;li&gt;Included support to bridge ERC-20 and IOU tokens&lt;/li&gt;
&lt;li&gt;Implemented a Witness Bridge to now use XChain transactions to natively secure bridge transfers between XRPL and the Sidechain with XLS-38d&lt;/li&gt;
&lt;li&gt;Witness bridge can now be distributed and operated by multiple parties - Up to 32 signers on XRPL&lt;/li&gt;
&lt;li&gt;Witness keys can be stored on AWS KMS to safely secure the keys&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dApps:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Launched Gnosis Safe dApp used to secure the bridged assets on the EVM Sidechain part&lt;/li&gt;
&lt;li&gt;Open dApp interface to everyone for safely creating a multisig account in the EVM Sidechain&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The EVM sidechain is being developed by &lt;a href="https://peersyst.com/"&gt;Peersyst&lt;/a&gt; in partnership with Ripple. Developers can iterate on their projects and applications faster and use popular smart contract languages like Solidity, while having access to XRP liquidity and a secure bridge to the XRP Ledger.&lt;/p&gt;

&lt;p&gt;The original version of the EVM sidechain announced last October &lt;a href="https://dev.to/ripplexdev/an-evm-sidechain-for-the-xrp-ledger-1pbi"&gt;here&lt;/a&gt; will be available at the following URLs for the next 1 month after which it will be retired. Developers are encouraged to use the new EVM sidechain instead to deploy their apps.&lt;/p&gt;

&lt;p&gt;EVM Sidechain V1 (which will be retired in a month)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RPC URL: &lt;a href="https://archived-rpc-evm-sidechain.xrpl.org"&gt;https://archived-rpc-evm-sidechain.xrpl.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;EVM Block Explorer URL: &lt;a href="https://archived-evm-sidechain.xrpl.org"&gt;https://archived-evm-sidechain.xrpl.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bridge URL: &lt;a href="https://archived-bridge.devnet.xrpl.org"&gt;https://archived-bridge.devnet.xrpl.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A security audit of the EVM sidechain is being conducted in July, the results of which will be published for the community to review. Peersyst and Ripple will take action to address any issues, and that information will also be shared with the community as well.&lt;/p&gt;

&lt;p&gt;The EVM sidechain is expected to go live on mainnet following the approval of the XLS-38d bridge amendment. The bridge is dependent on the proposal of the amendment, followed by at least 80% of the XRPL validator community accepting the proposal and holding their vote for at least two weeks.&lt;/p&gt;

</description>
      <category>xrpl</category>
      <category>opensource</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>XRP Ledger Sidechains Available on New Devnet</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Wed, 29 Mar 2023 20:36:20 +0000</pubDate>
      <link>https://dev.to/ripplexdev/xrp-ledger-sidechains-available-on-new-devnet-24ep</link>
      <guid>https://dev.to/ripplexdev/xrp-ledger-sidechains-available-on-new-devnet-24ep</guid>
      <description>&lt;p&gt;Last year, RippleX developers shared details on the &lt;a href="https://dev.to/ripplexdev/xrp-ledger-sidechains-redesigned-190i"&gt;new design of sidechains for the XRP Ledger&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;After testing and reviewing community feedback from the preview, the implementation, spec and documentation of that design (XLS-38d) are now complete and ready for review and testing. A new Devnet is also available for sidechains-related testing. Developers are invited to &lt;a href="https://github.com/XRPLF/XRPL-Standards/discussions/92"&gt;join the cross-chain bridge standards discussion on Github&lt;/a&gt;, or &lt;a href="https://opensource.ripple.com/docs/xls-38d-cross-chain-bridge/cross-chain-bridges/"&gt;check out the documentation&lt;/a&gt; to learn more and get started. &lt;/p&gt;

&lt;h2&gt;
  
  
  XRPL Sidechains Devnet Access Details
&lt;/h2&gt;

&lt;p&gt;The sidechains support for XRPL is now available for testing and initial application development. This proposal allows for the creation of an XRPL based sidechain, 2 door accounts connecting the locking chain (or mainchain) to issuing chain (or sidechain) and a set of witness servers to manage the flow of funds between these 2 blockchains. Below are access instructions for a public development network that has been set up. &lt;/p&gt;

&lt;p&gt;Please use &lt;a href="https://forms.gle/dvBe1Q1pH28TzB7o7"&gt;this form&lt;/a&gt; to report any bugs, provide feature feedback, or share any network issues you are experiencing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to access this network:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Locking chain:&lt;/strong&gt; sidechain-net1.devnet.rippletest.net 

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Websocket:&lt;/strong&gt; wss://sidechain-net1.devnet.rippletest.net:51233&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON-RPC:&lt;/strong&gt; &lt;a href="http://sidechain-net1.devnet.rippletest.net:51234"&gt;http://sidechain-net1.devnet.rippletest.net:51234&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Issuing chain:&lt;/strong&gt; sidechain-net2.devnet.rippletest.net

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Websocket:&lt;/strong&gt; wss://sidechain-net2.devnet.rippletest.net:51233&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON-RPC:&lt;/strong&gt; &lt;a href="http://sidechain-net2.devnet.rippletest.net:51234"&gt;http://sidechain-net2.devnet.rippletest.net:51234&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locking chain faucet:&lt;/strong&gt;
curl -X POST &lt;a href="https://sidechain-faucet.devnet.rippletest.net/accounts"&gt;&lt;/a&gt;&lt;a href="https://sidechain-faucet.devnet.rippletest.net/accounts"&gt;https://sidechain-faucet.devnet.rippletest.net/accounts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;XRP-XRP Bridge:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Locking Chain Door:&lt;/strong&gt; &lt;code&gt;"rMAXACCrp3Y8PpswXcg3bKggHX76V3F8M4"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Issuing Chain Door:&lt;/strong&gt; &lt;code&gt;"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Client Library Support (Beta):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript library: &lt;a href="mailto:xrpl.js@2.7.0-beta.3"&gt;xrpl.js@2.7.0-beta.3&lt;/a&gt;, &lt;a href="mailto:ripple-binary-codec@1.5.0-beta.3"&gt;ripple-binary-codec@1.5.0-beta.3&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Python library: xrpl-py 1.8.0b2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Network Explorer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://custom.xrpl.org/"&gt;https://custom.xrpl.org/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: This network is still in beta and there may be crashes or network resets. Please use &lt;a href="https://forms.gle/dvBe1Q1pH28TzB7o7"&gt;this form&lt;/a&gt; to report any issues.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next For Programmability? EVM Sidechain and Hooks
&lt;/h2&gt;

&lt;p&gt;RippleX engineers also recently unveiled an &lt;a href="https://dev.to/ripplexdev/an-evm-sidechain-for-the-xrp-ledger-1pbi"&gt;Ethereum Virtual Machine (EVM) sidechain&lt;/a&gt; on Devnet to allow even more developers easy access to XRPL’s feature set and bring existing Solidity-based smart contracts written for EVM-compatible chains to the XRPL. &lt;/p&gt;

&lt;p&gt;Additionally, as a direct response to the demand for smart contract-like functionality on the XRP Ledger, the team at XRPL Labs has introduced &lt;a href="https://xrpl-hooks.readme.io/"&gt;Hooks&lt;/a&gt;. Hooks are small, efficient pieces of code that allow for the quick and easy execution of logic before and after a transaction — all native to the Ledger. Hooks will enable additional programmability on top of XRPL as well as smart contact capabilities that are fast, low-cost and eliminate the need for Solidity or contract-to-contract calling.&lt;/p&gt;

&lt;p&gt;We will keep the community apprised of new updates as we continue to progress our roadmap for XRPL sidechains.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;With the re-release of sidechains, developers and contributors are invited to the &lt;a href="https://discord.gg/sfX3ERAMjH"&gt;XRPL discord community&lt;/a&gt; to comment and ask questions To learn more about sidechains and other innovations, visit &lt;a href="https://github.com/XRPLF/rippled/pull/4292"&gt;GitHub&lt;/a&gt; or check out the &lt;a href="https://learn.xrpl.org/course/intro-to-the-xrpl/lesson/intro-to-new-innovations-on-the-xrpl/"&gt;XRP Ledger Learning Portal course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>An EVM Sidechain for the XRP Ledger</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Mon, 17 Oct 2022 13:17:49 +0000</pubDate>
      <link>https://dev.to/ripplexdev/an-evm-sidechain-for-the-xrp-ledger-1pbi</link>
      <guid>https://dev.to/ripplexdev/an-evm-sidechain-for-the-xrp-ledger-1pbi</guid>
      <description>&lt;p&gt;Last September, David Schwartz &lt;a href="https://twitter.com/JoelKatz/status/1443642560056987651?s=20&amp;amp;t=TgViB1MhbNBJxvguUvyUeA"&gt;introduced&lt;/a&gt; his thoughts on an Ethereum Virtual Machine (EVM) sidechain to bring Ethereum smart contracts to the &lt;a href="http://www.xrpl.org"&gt;XRP Ledger (XRPL)&lt;/a&gt; and lower the barriers to entry for developers wanting to build apps with cross-chain interoperability.&lt;/p&gt;

&lt;p&gt;Today, &lt;a href="https://twitter.com/Peersyst"&gt;Peersyst&lt;/a&gt; is announcing that it has released the first phase of the EVM sidechain for the XRPL now live on XRPL Devnet. &lt;/p&gt;

&lt;p&gt;This milestone means more developers can easily access the XRPL’s feature set (such as its speed, sustainability and low-cost transactions) and bring Solidity-based smart contracts to the XRPL. As part of the phase 1 launch, we’re also introducing a bridge between an EVM-compatible chain and the XRP Ledger Devnet. &lt;/p&gt;

&lt;p&gt;The release means developers no longer have to choose between XRPL or EVM-compatible blockchains; they can have the best of both worlds. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Road(map) Ahead&lt;/strong&gt;&lt;br&gt;
This first phase of the EVM sidechain is currently available for testing on the &lt;a href="https://xrpl.org/parallel-networks.html"&gt;XRPL Devnet&lt;/a&gt;. Using a bridge, developers can test the exchange of Devnet XRP between the EVM sidechain and XRP Ledger to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assess available technologies&lt;/li&gt;
&lt;li&gt;Deploy their existing Solidity apps on the EVM sidechain and access the XRPL Devnet userbase&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Phase two of the project, on track for early 2023, will feature a permissionless EVM sidechain and bridge with a unique design that connects to the XRPL Devnet to expand participation and test scalability within a controlled environment. The end goal is phase three: a permissionless EVM sidechain and bridge available on the XRPL Mainnet slated to follow. &lt;/p&gt;

&lt;p&gt;Throughout all three phases, the EVM sidechain will feature block and finality times comparable to the XRPL Mainnet and support Ethereum smart contracts and applications like Metamask, Remix and Truffle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bridging Between the Best of Both Worlds&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0wwxr0w8oglsg4tmn7n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0wwxr0w8oglsg4tmn7n.png" alt="What is an EVM Sidechain?" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Many crypto developers today choose to build on Ethereum or EVM-compatible chains because of the popularity of Solidity for programming smart contracts and a robust ecosystem of available developer tools and dApps (decentralized applications). On the other hand, the XRPL appeals to developers because of its speed, low cost, sustainability and other features.  &lt;/p&gt;

&lt;p&gt;However, making the XRP Ledger EVM-compatible could undermine its efficiency, scalability and security.  So, instead of forcing developers to choose between chains, Peersyst and Ripple partnered to create an EVM sidechain connected to the main XRPL. &lt;/p&gt;

&lt;p&gt;By building an EVM sidechain and bridge, we are making XRPL features accessible to more developers that would benefit from XRPL advantages like fast, low-cost transactions at scale. Developers can also leverage the sidechain and bridge to use XRP within the EVM sidechain environment. &lt;/p&gt;

&lt;p&gt;Between Ethereum smart contracts, &lt;a href="https://xrpl-hooks.readme.io/"&gt;Hooks&lt;/a&gt; and Smart Transactors, XRPL developers will have the flexibility to build the next generation of blockchain-driven apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Experiment Today&lt;/strong&gt;&lt;br&gt;
Developers can try out the new EVM sidechain today by connecting XRPL Devnet with a XUMM wallet, connecting Metamask with the EVM sidechain, then transferring XRP from XRPL Devnet to the EVM sidechain and back again. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: EVM Sidechain - Devnet&lt;/li&gt;
&lt;li&gt;RPC URL: &lt;a href="https://rpc-evm-sidechain.xrpl.org"&gt;https://rpc-evm-sidechain.xrpl.org&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Network identifier: 1440001&lt;/li&gt;
&lt;li&gt;Digital Asset: eXRP&lt;/li&gt;
&lt;li&gt;EVM Block Explorer URL: &lt;a href="https://evm-sidechain.xrpl.org"&gt;https://evm-sidechain.xrpl.org&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Bridge URL: &lt;a href="https://bridge.devnet.xrpl.org"&gt;https://bridge.devnet.xrpl.org&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers, we invite you to &lt;a href="https://xrpl.org/intro-to-evm-sidechain.html"&gt;experiment with the EVM sidechain&lt;/a&gt; on Devnet and join the &lt;a href="https://t.co/I3s42AsIKS"&gt;XRPL Developers Discord&lt;/a&gt; to provide your feedback/suggestions. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can also learn more about the redesigned XRPL sidechains &lt;a href="https://dev.to/ripplexdev/xrp-ledger-sidechains-redesigned-190i"&gt;here&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=2h6KVCPXdI8"&gt;watch&lt;/a&gt; Peersyst’s demo on how to design an EVM sidechain at Apex 2022.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Introducing xrpl.js</title>
      <dc:creator>Mayukha Vadari</dc:creator>
      <pubDate>Wed, 20 Oct 2021 22:02:18 +0000</pubDate>
      <link>https://dev.to/ripplexdev/introducing-xrpljs-37p7</link>
      <guid>https://dev.to/ripplexdev/introducing-xrpljs-37p7</guid>
      <description>&lt;p&gt;&lt;a href="https://ripple.com/ripplex/"&gt;RippleX&lt;/a&gt; and the &lt;a href="https://xrplf.org/"&gt;XRP Ledger Foundation (XRPLF)&lt;/a&gt; are excited to announce xrpl.js &lt;strong&gt;version 2.0.0&lt;/strong&gt;, a JavaScript/TypeScript library for interacting with the XRP Ledger (XRPL). Formerly known as ripple-lib, the library was renamed to better represent its role in the XRPL ecosystem and overhauled to take advantage of modern JavaScript features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;JavaScript is one of the most widely-used programming languages, and as such has a massive community of active developers. Maintaining a JavaScript SDK enables these developers to seamlessly interact with the XRP Ledger, both in the browser and in Node.js. In addition, the JavaScript libraries (xrpl.js, ripple-binary-codec, ripple-keypairs, and ripple-address-codec) power many &lt;a href="https://github.com/XRPLF/xrpl.js/blob/develop/APPLICATIONS.md"&gt;apps&lt;/a&gt; in the XRPL ecosystem, as well as &lt;a href="https://www.npmjs.com/browse/depended/ripple-lib"&gt;packages&lt;/a&gt; from companies such as BitGo and Ledger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Changes
&lt;/h2&gt;

&lt;p&gt;With this release of xrpl.js, the JavaScript, &lt;a href="https://github.com/XRPLF/xrpl4j"&gt;Java&lt;/a&gt;, and &lt;a href="https://github.com/XRPLF/xrpl-py/"&gt;Python&lt;/a&gt; libraries provided by the XRPLF now have parallel structures and systems. This enables developers to easily work with their preferred programming language depending on their specific needs, without having to learn an entirely new interface.&lt;/p&gt;

&lt;p&gt;xrpl.js will continue to support all ripple-lib features, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serializing, signing, and submitting transactions to the XRPL&lt;/li&gt;
&lt;li&gt;Retrieving information from the XRPL&lt;/li&gt;
&lt;li&gt;Helpful utility functions (such as converting between &lt;a href="https://xrpl.org/xrp.html#xrp-properties"&gt;drops&lt;/a&gt; and XRP)&lt;/li&gt;
&lt;li&gt;Support for Node.js, web browsers, and React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also introduces a number of new features, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript types for all transaction types and WebSocket requests&lt;/li&gt;
&lt;li&gt;A Wallet class to make it easier to work with key pairs&lt;/li&gt;
&lt;li&gt;Protections against the &lt;a href="https://xrpl.org/partial-payments.html#partial-payments-exploit"&gt;partial payment attack vector&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;An additional submit implementation that returns the transaction's final outcome after validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In version 2.0, the library is now much more aligned with the core XRP Ledger interface. This means XRPL developers—whether new or experienced—can refer to multiple sources of documentation instead of needing to rely solely on the library-specific documentation. There are also a number of general architecture improvements, such as simplifying code, making user interfaces more intuitive (especially in relation to the core ledger), and revamping the testing structure. For a detailed list of changes, visit the &lt;a href="https://github.com/XRPLF/xrpl.js/blob/develop/HISTORY.md"&gt;changelog&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start Building
&lt;/h2&gt;

&lt;p&gt;To get started using xrpl.js, see &lt;a href="https://xrpl.org/get-started-using-javascript.html"&gt;this tutorial on xrpl.org&lt;/a&gt;, or check out the &lt;a href="https://github.com/XRPLF/xrpl.js"&gt;project repo&lt;/a&gt; or &lt;a href="https://js.xrpl.org/"&gt;reference documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you already have a project that uses ripple-lib, migrate today! We have a &lt;a href="https://xrpl.org/xrpljs2-migration-guide.html"&gt;migration guide for moving your code from ripple-lib v1.10 to xrpl.js v2.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We hope you enjoy building the Internet of Value, and feel welcome to reach out to the XRP Ledger developer community if you have any questions!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>blockchain</category>
      <category>xrpl</category>
    </item>
  </channel>
</rss>
