[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-83ezG9JSEFSuTViwYw574AYUjvwl3BCO6PG96QAucZk":3,"sanity-3zj6-ECHasEue4FhzuwA6FqPdyygnHHnIMnl__pXpys":1320},{"data":4,"sourceMap":-1},{"latestPodcast":5,"latestReleases":14,"post":39,"recent":1295},[6],{"_id":7,"publishedAt":8,"slug":9,"sponsored":12,"title":13},"4d0175f4-40a8-47eb-9bb3-a453b326aa7d","2026-07-03T07:40:00.000Z",{"_type":10,"current":11},"slug","the-good-the-bad-and-the-ai-apps",null,"The good, the bad, and the AI apps",[15,21,27,33],{"_id":16,"publishedAt":17,"slug":18,"title":20},"eb5b66eb-9410-4329-83bb-22bbff39402a","2026-04-28T13:00:00.000Z",{"_type":10,"current":19},"turn-scattered-knowledge-into-trusted-intelligence","Turning scattered knowledge into trusted intelligence: Stack Internal 2026.3",{"_id":22,"publishedAt":23,"slug":24,"title":26},"369c2401-b62e-4a37-8ff8-bf603023ecad","2026-03-02T15:03:00.988Z",{"_type":10,"current":25},"what-s-new-at-stack-overflow-march-2026","What’s new at Stack Overflow: March 2026",{"_id":28,"publishedAt":29,"slug":30,"title":32},"5e9053a4-07ea-447c-91ea-29e0b6228537","2026-02-02T15:00:00.000Z",{"_type":10,"current":31},"what-s-new-at-stack-overflow-february-2026","What’s new at Stack Overflow: February 2026",{"_id":34,"publishedAt":35,"slug":36,"title":38},"a1b538eb-a8a6-46d0-80a1-ac70ec9bb935","2026-01-05T10:00:00.000-05:00",{"_type":10,"current":37},"what-s-new-at-stack-overflow-january-2026","What’s new at Stack Overflow: January 2026",{"_createdAt":40,"_id":41,"_rev":42,"_type":43,"_updatedAt":44,"author":45,"body":57,"comments":1255,"dateUrl":1256,"excerpt":1257,"image":1258,"product":12,"publishedAt":1262,"slug":1263,"sponsored":1255,"tags":1265,"title":1294,"visible":1255},"2024-07-16T22:14:34Z","233de701-1faa-4b32-bc79-89bcc98ea771","MosDPJEahtpZII9OhfdJ7r","blogPost","2024-07-22T17:18:13Z",[46],{"_createdAt":47,"_id":48,"_rev":49,"_type":50,"_updatedAt":47,"bio":51,"employee":52,"name":53,"role":54,"slug":55},"2024-07-16T22:16:32Z","015bd7f1-2b58-40fb-afc5-d95d1033a2ba","E0O678bn1VsibrtB5Hc0IT","blogAuthor","Jasmine (Jazzi) Cooper is Ripple’s Head of DeFi Product where she leads tokenization and DeFi products within RippleX, the team focused on providing infrastructure, tools, services, and programs for developers to enable new crypto use cases on the XRP Ledger. Her most recent focuses have been adding a new, native NFT standard to the XRP Ledger as well as a native automated market-maker (AMM) protocol. Prior to joining Ripple, Jazzi spent several years in financial technology, serving as a product manager in mortgage tech and founding a company in the financial health space.","none","Jasmine Cooper","Lead Product Manager & Head of DeFi Products, Ripple",{"_type":10,"current":56},"jasmine-cooper",[58,69,90,98,106,114,122,130,138,190,239,247,256,275,281,322,330,349,357,365,373,381,391,399,407,415,423,442,451,481,490,498,505,530,533,540,555,562,586,593,596,604,611,614,622,646,653,683,690,693,701,720,727,769,776,783,786,806,825,832,839,842,850,866,873,876,891,898,901,928,931,939,972,979,982,989,997,1046,1053,1056,1063,1093,1102,1117,1121,1129,1144,1163,1171,1183,1195,1207,1219,1227],{"_key":59,"_type":60,"children":61,"markDefs":67,"style":68},"94a26150179e","block",[62],{"_key":63,"_type":64,"marks":65,"text":66},"a3f8ee20a52c","span",[],"SPONSORED BY RIPPLE",[],"h2",{"_key":70,"_type":60,"children":71,"markDefs":85,"style":89},"e0d061fc5f89",[72,76,81],{"_key":73,"_type":64,"marks":74,"text":75},"e60535e8b9ca0",[],"Plenty of developers assume that working with blockchain technologies requires programming languages created specifically for the blockchain, like ",{"_key":77,"_type":64,"marks":78,"text":80},"e60535e8b9ca1",[79],"540dcc0066d4","Solidity",{"_key":82,"_type":64,"marks":83,"text":84},"e60535e8b9ca2",[],", which lets you create smart contracts that run on Ethereum. But you can bridge the gap between Web2 and Web3 using languages you’re already comfortable with.",[86],{"_key":79,"_type":87,"href":88,"reference":12},"link","https:\u002F\u002Fsoliditylang.org\u002F","normal",{"_key":91,"_type":60,"children":92,"markDefs":97,"style":89},"d63b9f046e57",[93],{"_key":94,"_type":64,"marks":95,"text":96},"ebbc765681ee0",[],"In this post, we’ll show developers how to build Web3 applications using JavaScript. We’ll include a tutorial that allows you to build the foundation of any Web3 application you want to build.",[],{"_key":99,"_type":60,"children":100,"markDefs":105,"style":68},"c744e731d4b0",[101],{"_key":102,"_type":64,"marks":103,"text":104},"977fe70838ed0",[],"What’s different in a Web3 workflow?",[],{"_key":107,"_type":60,"children":108,"markDefs":113,"style":89},"213b6ea34f8d",[109],{"_key":110,"_type":64,"marks":111,"text":112},"2a05ce1adc160",[],"For those of you familiar with web applications and their development, you probably create apps with a front end\u002Fback end division. You may also have a database on the back end. Your front end—the client—usually runs in a browser or as an app, so the technologies involved include HTML, JavaScript, and various frameworks and libraries to support these (among others). Your back end lives on a remote server and provides data to the client.",[],{"_key":115,"_type":60,"children":116,"markDefs":121,"style":89},"77411fbc6772",[117],{"_key":118,"_type":64,"marks":119,"text":120},"367388592b930",[],"In a Web3 workflow, you still have a front end\u002Fback end division, except that the back end is the blockchain. So long as you have libraries and APIs that can communicate with the blockchain, you can create apps that use a web or mobile front end. For developers who operate in a primarily Web2 world, this makes it very easy to build Web3 apps using Web2 skills.",[],{"_key":123,"_type":60,"children":124,"markDefs":129,"style":89},"67fcef602687",[125],{"_key":126,"_type":64,"marks":127,"text":128},"c3b7aff366180",[],"The one catch is that because responses from the blockchain can take variable amounts of time, it’s best to request and receive from blockchains using asynchronous methods. As we’ll see in the tutorial below, we have a preferred method to do that in web interfaces: Promises.",[],{"_key":131,"_type":60,"children":132,"markDefs":137,"style":68},"7e0c782f3904",[133],{"_key":134,"_type":64,"marks":135,"text":136},"dede9aa657a10",[],"Simplify blockchain development on the XRP Ledger",[],{"_key":139,"_type":60,"children":140,"markDefs":181,"style":89},"8b07743d2d29",[141,145,150,154,159,163,168,172,177],{"_key":142,"_type":64,"marks":143,"text":144},"937e3bccac330",[],"The ",{"_key":146,"_type":64,"marks":147,"text":149},"937e3bccac331",[148],"d4e951ceb69f","XRP Ledger (XRPL)",{"_key":151,"_type":64,"marks":152,"text":153},"937e3bccac332",[]," is a decentralized, open-source blockchain designed to facilitate fast, low-cost international payments. Instead of relying on complex smart contract logic, the XRPL is programmable in the sense that core developers can create native protocols. For developers with Web2 skills, this is particularly advantageous because the XRPL allows them to leverage a robust and efficient blockchain using familiar programming languages such as ",{"_key":155,"_type":64,"marks":156,"text":158},"937e3bccac333",[157],"d313cfe290f3","JavaScript",{"_key":160,"_type":64,"marks":161,"text":162},"937e3bccac334",[],", ",{"_key":164,"_type":64,"marks":165,"text":167},"937e3bccac335",[166],"508037184ea6","Java",{"_key":169,"_type":64,"marks":170,"text":171},"937e3bccac336",[],", and ",{"_key":173,"_type":64,"marks":174,"text":176},"937e3bccac337",[175],"c3668c28b111","Python",{"_key":178,"_type":64,"marks":179,"text":180},"937e3bccac338",[],". This means they can build and interact with the XRPL through accessible APIs without needing to learn new, complex technologies, making the transition to blockchain development smooth and intuitive.",[182,184,186,188],{"_key":148,"_type":87,"href":183,"reference":12},"https:\u002F\u002Fxrpl.org\u002F",{"_key":157,"_type":87,"href":185,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Ftutorials\u002Fjavascript\u002F#javascript",{"_key":166,"_type":87,"href":187,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Ftutorials\u002Fjava\u002F#java",{"_key":175,"_type":87,"href":189,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Ftutorials\u002Fpython\u002F#python",{"_key":191,"_type":60,"children":192,"markDefs":230,"style":89},"e0356a5c26f7",[193,197,202,205,210,213,218,221,226],{"_key":194,"_type":64,"marks":195,"text":196},"77da5d9d86860",[],"A vibrant community of developers, validators, and companies, including the ",{"_key":198,"_type":64,"marks":199,"text":201},"77da5d9d86861",[200],"9c1f3946f362","XRPL Foundation",{"_key":203,"_type":64,"marks":204,"text":162},"77da5d9d86862",[],{"_key":206,"_type":64,"marks":207,"text":209},"77da5d9d86863",[208],"2401e37758da","XRPL Labs",{"_key":211,"_type":64,"marks":212,"text":162},"77da5d9d86864",[],{"_key":214,"_type":64,"marks":215,"text":217},"77da5d9d86865",[216],"231fcc106723","Ripple",{"_key":219,"_type":64,"marks":220,"text":171},"77da5d9d86866",[],{"_key":222,"_type":64,"marks":223,"text":225},"77da5d9d86867",[224],"857938d87b4e","XRPL Commons",{"_key":227,"_type":64,"marks":228,"text":229},"77da5d9d86868",[],", actively contribute to and develop enhancements for the XRPL. Protocols are purposefully designed and implemented as native features of the XRPL, with many offering support for activities like payments, trading, escrow, and tokenization. To add a new one, an amendment process must take place whereby validators debate and test all assumptions, and only vote it in as a live feature when they are convinced it will work as intended and not negatively impact the XRPL. Any new features or changes to the blockchain require agreement from at least 80% of validators. This ensures that the XRPL remains secure and reliable while continuously evolving, offering developers a stable and progressive platform.",[231,233,235,237],{"_key":200,"_type":87,"href":232,"reference":12},"https:\u002F\u002Ffoundation.xrpl.org\u002F",{"_key":208,"_type":87,"href":234,"reference":12},"https:\u002F\u002Fgithub.com\u002FXRPL-Labs",{"_key":216,"_type":87,"href":236,"reference":12},"https:\u002F\u002Fripple.com\u002F",{"_key":224,"_type":87,"href":238,"reference":12},"https:\u002F\u002Fwww.xrpl-commons.org\u002F",{"_key":240,"_type":60,"children":241,"markDefs":246,"style":89},"5e11b5144160",[242],{"_key":243,"_type":64,"marks":244,"text":245},"da8334a8b0fc0",[],"The XRPL is powered by its native token XRP, which was purpose-built for payments and stands out as one of the few cryptocurrencies not classified as a security in the US, backed by regulatory clarity in several other countries.",[],{"_key":248,"_type":60,"children":249,"markDefs":254,"style":255},"431d1684f12a",[250],{"_key":251,"_type":64,"marks":252,"text":253},"e4a48ea29b290",[],"Features and capabilities",[],"h3",{"_key":257,"_type":60,"children":258,"markDefs":272,"style":89},"d74243a85ba8",[259,263,268],{"_key":260,"_type":64,"marks":261,"text":262},"5cc1ed1659c50",[],"The XRP Ledger’s decentralized nature is underscored by its network of over 600 nodes that process transactions and maintain the ledger. Its unique Proof-of-Association (PoA) ",{"_key":264,"_type":64,"marks":265,"text":267},"5cc1ed1659c51",[266],"5fdf39b8fc59","consensus protocol",{"_key":269,"_type":64,"marks":270,"text":271},"5cc1ed1659c52",[],", operated by diverse entities including universities, exchanges, and businesses, enhances security and trust in the network.",[273],{"_key":266,"_type":87,"href":274,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Fconsensus-protocol\u002F#consensus-protocol",{"_key":276,"_type":277,"asset":278,"markDefs":12},"f5442b949186","image",{"_ref":279,"_type":280},"image-47055acffd06500c0143ad071d9b8ea84bea04c5-512x234-png","reference",{"_key":282,"_type":60,"children":283,"markDefs":315,"style":89},"57f4b2164122",[284,288,293,297,302,306,311],{"_key":285,"_type":64,"marks":286,"text":287},"094850d2c2490",[],"One of the standout features for developers is the XRPL's native ",{"_key":289,"_type":64,"marks":290,"text":292},"094850d2c2491",[291],"e26c66c93874","decentralized exchange (DEX)",{"_key":294,"_type":64,"marks":295,"text":296},"094850d2c2492",[]," functionality. The DEX features a dual approach to trading by supporting both traditional order books and automated market making. This integrated system allows users to place a trade, and the ledger automatically selects the method that offers the best price for execution. The DEX also offers on-chain liquidity for numerous currency pairs and includes advanced features such as ",{"_key":298,"_type":64,"marks":299,"text":301},"094850d2c2493",[300],"0e31825fda1d","auto-bridging",{"_key":303,"_type":64,"marks":304,"text":305},"094850d2c2494",[]," and ",{"_key":307,"_type":64,"marks":308,"text":310},"094850d2c2495",[309],"fb64b9144dd2","pathfinding",{"_key":312,"_type":64,"marks":313,"text":314},"094850d2c2496",[],", which optimize trading efficiency. This integrated exchange enables seamless asset transfers and liquidity access, simplifying complex financial operations.",[316,318,320],{"_key":291,"_type":87,"href":317,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Ftokens\u002Fdecentralized-exchange\u002F",{"_key":300,"_type":87,"href":319,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Ftokens\u002Fdecentralized-exchange\u002Fautobridging\u002F",{"_key":309,"_type":87,"href":321,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Ftokens\u002Ffungible-tokens\u002Fpaths\u002F#pathfinding",{"_key":323,"_type":60,"children":324,"markDefs":329,"style":89},"20fcece97596",[325],{"_key":326,"_type":64,"marks":327,"text":328},"5c18653f295d0",[],"Moreover, the XRPL is fast and sustainable, processing transactions every three to five seconds at fractions of a cent. This eco-friendly and cost-effective approach supports mass market adoption, making it an attractive choice for developers focusing on sustainability and scalability.",[],{"_key":331,"_type":60,"children":332,"markDefs":346,"style":89},"70ddd55e495c",[333,337,342],{"_key":334,"_type":64,"marks":335,"text":336},"bc1fbc9367f70",[],"Since its inception in 2012, the XRPL has processed over 2.8 billion transactions, moving over $1 trillion in value without experiencing any security breaches or failures. This track record of reliability and performance provides a trustworthy platform for developers to test and ",{"_key":338,"_type":64,"marks":339,"text":341},"bc1fbc9367f71",[340],"297d3ba54197","build a Web3 business",{"_key":343,"_type":64,"marks":344,"text":345},"bc1fbc9367f72",[],".",[347],{"_key":340,"_type":87,"href":348,"reference":12},"https:\u002F\u002Flearn.xrpl.org\u002Fcourse\u002Fblockchain-for-business\u002F?utm_source=blog&utm_medium=stack_overflow&utm_campaign=bridge_gap_between_web2_and_web3&utm_content=build_a_web3_business_hyperlink1",{"_key":350,"_type":60,"children":351,"markDefs":356,"style":89},"c40d86d05ab7",[352],{"_key":353,"_type":64,"marks":354,"text":355},"67828252db630",[],"Finally, the XRPL allows developers to access complete blockchain functionality using common programming languages. This eliminates the need to learn and manage complex smart contracts, enabling Web2 developers to seamlessly transition to blockchain development and start building applications on the XRPL.",[],{"_key":358,"_type":60,"children":359,"markDefs":364,"style":89},"cf731b7f76b7",[360],{"_key":361,"_type":64,"marks":362,"text":363},"ddb3ef8028760",[],"",[],{"_key":366,"_type":60,"children":367,"markDefs":372,"style":68},"19aad6284b25",[368],{"_key":369,"_type":64,"marks":370,"text":371},"b289630cdb0e0",[],"How does coding on the XRPL work?",[],{"_key":374,"_type":60,"children":375,"markDefs":380,"style":89},"50a8b4142af2",[376],{"_key":377,"_type":64,"marks":378,"text":379},"55bd741cd4d50",[],"The simplest way to show you how this all works is to let you try it for yourself. Below we’ve included a just-start for applications you can run through your browser. This shows you how to:",[],{"_key":382,"_type":60,"children":383,"level":388,"listItem":389,"markDefs":390,"style":89},"b24db6539ecd",[384],{"_key":385,"_type":64,"marks":386,"text":387},"ef4d79448a000",[],"Import the xrpl.js library into a new project.",1,"number",[],{"_key":392,"_type":60,"children":393,"level":388,"listItem":389,"markDefs":398,"style":89},"4138cf131943",[394],{"_key":395,"_type":64,"marks":396,"text":397},"5cb2983ee06b0",[],"Connect to the ledger.",[],{"_key":400,"_type":60,"children":401,"level":388,"listItem":389,"markDefs":406,"style":89},"c7d938d860dc",[402],{"_key":403,"_type":64,"marks":404,"text":405},"a61a7b5a28950",[],"Get an account.",[],{"_key":408,"_type":60,"children":409,"level":388,"listItem":389,"markDefs":414,"style":89},"a91c43aa8046",[410],{"_key":411,"_type":64,"marks":412,"text":413},"8457563389160",[],"Request data.",[],{"_key":416,"_type":60,"children":417,"level":388,"listItem":389,"markDefs":422,"style":89},"d6345846ed0f",[418],{"_key":419,"_type":64,"marks":420,"text":421},"c7c10411f9160",[],"Listen for events.",[],{"_key":424,"_type":60,"children":425,"markDefs":439,"style":89},"c0c608dbdc51",[426,430,435],{"_key":427,"_type":64,"marks":428,"text":429},"4a4fb7ed46da0",[],"While you are learning and developing new applications, you can use the ",{"_key":431,"_type":64,"marks":432,"text":434},"4a4fb7ed46da1",[433],"ada86ba822f3","Testnet servers",{"_key":436,"_type":64,"marks":437,"text":438},"4a4fb7ed46da2",[],". These servers work the same as our livenet ledger, but they don’t use real XRP or currency. This tutorial uses Testnet—which is what most developers use when getting started—but if you develop something that you’re ready to set live, you can change to the livenet servers easily.",[440],{"_key":433,"_type":87,"href":441,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fresources\u002Fdev-tools\u002Fxrp-faucets\u002F",{"_key":443,"_type":60,"children":444,"markDefs":450,"style":255},"04f158735b7e",[445],{"_key":446,"_type":64,"marks":447,"text":449},"278281c832820",[448],"strong","Getting started with JavaScript",[],{"_key":452,"_type":60,"children":453,"markDefs":476,"style":89},"43b03e0f4bb3",[454,458,463,467,472],{"_key":455,"_type":64,"marks":456,"text":457},"57a6d88c309b0",[],"This tutorial guides you through the basics of building an XRPL-connected application in JavaScript or TypeScript using the ",{"_key":459,"_type":64,"marks":460,"text":462},"57a6d88c309b1",[461],"4a66f86fc542","xrpl.js",{"_key":464,"_type":64,"marks":465,"text":466},"57a6d88c309b2",[]," client library. The scripts and config files used in this guide are available in the ",{"_key":468,"_type":64,"marks":469,"text":471},"57a6d88c309b3",[470],"69b4ab8cd097","GitHub Repository",{"_key":473,"_type":64,"marks":474,"text":475},"57a6d88c309b4",[],". If using Node.js, we recommend version 14, though versions 12 and 16 are also regularly tested.",[477,479],{"_key":461,"_type":87,"href":478,"reference":12},"http:\u002F\u002Fxrpl.js",{"_key":470,"_type":87,"href":480,"reference":12},"https:\u002F\u002Fgithub.com\u002FXRPLF\u002Fxrpl-dev-portal\u002Ftree\u002Fmaster\u002F_code-samples\u002Fget-started\u002Fjs\u002F",{"_key":482,"_type":60,"children":483,"markDefs":488,"style":489},"ea3f687f19bd",[484],{"_key":485,"_type":64,"marks":486,"text":487},"b61f790321840",[448],"Import the library",[],"h4",{"_key":491,"_type":60,"children":492,"markDefs":497,"style":89},"467073237513",[493],{"_key":494,"_type":64,"marks":495,"text":496},"223e2a5b1c9e0",[],"How you load xrpl.js into your project depends on your development environment:",[],{"_key":499,"_type":60,"children":500,"markDefs":504,"style":89},"d12176fc1620",[501],{"_key":502,"_type":64,"marks":503,"text":363},"66cfa26879000",[],[],{"_key":506,"_type":60,"children":507,"markDefs":529,"style":89},"f652c5fb2ada",[508,512,516,520,525],{"_key":509,"_type":64,"marks":510,"text":511},"e67f46aa2dc50",[],"For ",{"_key":513,"_type":64,"marks":514,"text":515},"e67f46aa2dc51",[448],"web browsers",{"_key":517,"_type":64,"marks":518,"text":519},"e67f46aa2dc52",[],", add a ",{"_key":521,"_type":64,"marks":522,"text":524},"7723f5c44833",[523],"code","\u003Cscript>",{"_key":526,"_type":64,"marks":527,"text":528},"932074a1c83c",[]," tag to your HTML:",[],{"_key":531,"_type":523,"code":532,"markDefs":12},"5e8deeae25c3","\u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Fxrpl\u002Fbuild\u002Fxrpl-latest-min.js\">\u003C\u002Fscript>",{"_key":534,"_type":60,"children":535,"markDefs":539,"style":89},"0a0a1b7ccf28",[536],{"_key":537,"_type":64,"marks":538,"text":363},"593c04b7d87e0",[],[],{"_key":541,"_type":60,"children":542,"markDefs":554,"style":89},"5a546d588158",[543,547,551],{"_key":544,"_type":64,"marks":545,"text":546},"be64543219750",[],"You can load the library from a CDN, as in the above example, or download a release and host it on your own website. This loads the module into the top level as ",{"_key":548,"_type":64,"marks":549,"text":550},"b2123e4cd1f3",[523],"xrpl",{"_key":552,"_type":64,"marks":553,"text":345},"a89a8b74e300",[],[],{"_key":556,"_type":60,"children":557,"markDefs":561,"style":89},"c3af10ace931",[558],{"_key":559,"_type":64,"marks":560,"text":363},"1b23d85344b30",[],[],{"_key":563,"_type":60,"children":564,"markDefs":585,"style":89},"4eb697897205",[565,569,573,577,581],{"_key":566,"_type":64,"marks":567,"text":568},"046adfa704d00",[],"Fore ",{"_key":570,"_type":64,"marks":571,"text":572},"046adfa704d01",[448],"Node.js",{"_key":574,"_type":64,"marks":575,"text":576},"046adfa704d02",[],", add the library using npm. This updates your ",{"_key":578,"_type":64,"marks":579,"text":580},"bf75743e58c9",[523],"package.json",{"_key":582,"_type":64,"marks":583,"text":584},"152a6117e505",[]," file or creates a new one if it didn't already exist:",[],{"_key":587,"_type":60,"children":588,"markDefs":592,"style":89},"b352d7ce53f7",[589],{"_key":590,"_type":64,"marks":591,"text":363},"a49f9ca85a380",[],[],{"_key":594,"_type":523,"code":595,"markDefs":12},"0b4fb4a57089","npm install xrpl",{"_key":597,"_type":60,"children":598,"markDefs":603,"style":89},"7d8d103950d9",[599],{"_key":600,"_type":64,"marks":601,"text":602},"1631599cd1290",[],"Then import it:",[],{"_key":605,"_type":60,"children":606,"markDefs":610,"style":89},"411fa32478fa",[607],{"_key":608,"_type":64,"marks":609,"text":363},"b0416dc7c3390",[],[],{"_key":612,"_type":523,"code":613,"markDefs":12},"6be42417dceb","const xrpl = require(\"xrpl\")",{"_key":615,"_type":60,"children":616,"markDefs":621,"style":489},"e1816404eee0",[617],{"_key":618,"_type":64,"marks":619,"text":620},"1f316db616000",[448],"Connect to the XRP Ledger",[],{"_key":623,"_type":60,"children":624,"markDefs":645,"style":89},"2249643c2af9",[625,629,633,637,641],{"_key":626,"_type":64,"marks":627,"text":628},"32852c2529560",[],"Before you can make queries and submit transactions, you need to connect to the XRPL. To do this with xrpl.js, create an instance of the ",{"_key":630,"_type":64,"marks":631,"text":632},"d24884c623b2",[523],"Client",{"_key":634,"_type":64,"marks":635,"text":636},"5d0dfc35625d",[]," class and use the ",{"_key":638,"_type":64,"marks":639,"text":640},"df2fa5a3059f",[523],"connect()",{"_key":642,"_type":64,"marks":643,"text":644},"e380c88604f1",[]," method.",[],{"_key":647,"_type":60,"children":648,"markDefs":652,"style":89},"f72d06f581f7",[649],{"_key":650,"_type":64,"marks":651,"text":363},"6bb512d927600",[],[],{"_key":654,"_type":60,"children":655,"markDefs":678,"style":89},"13ec8aa20264",[656,660,665,669,674],{"_key":657,"_type":64,"marks":658,"text":659},"2b1b7b0d90bc0",[],"Tip: Many network functions in xrpl.js use ",{"_key":661,"_type":64,"marks":662,"text":664},"2b1b7b0d90bc1",[663],"ae64cd26cb62","Promises",{"_key":666,"_type":64,"marks":667,"text":668},"2b1b7b0d90bc2",[]," to return values asynchronously. The code samples here use the ",{"_key":670,"_type":64,"marks":671,"text":673},"2b1b7b0d90bc3",[672],"85adac797377","async\u002Fawait pattern",{"_key":675,"_type":64,"marks":676,"text":677},"2b1b7b0d90bc4",[]," to wait for the actual result of the Promises.",[679,681],{"_key":663,"_type":87,"href":680,"reference":12},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FPromise",{"_key":672,"_type":87,"href":682,"reference":12},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FLearn\u002FJavaScript\u002FAsynchronous\u002FAsync_await",{"_key":684,"_type":60,"children":685,"markDefs":689,"style":89},"0f52199c8b8b",[686],{"_key":687,"_type":64,"marks":688,"text":363},"af6d6767e7400",[],[],{"_key":691,"_type":523,"code":692,"markDefs":12},"bf53d144d581","\u002F\u002F In browsers, use a \u003Cscript> tag. In Node.js, uncomment the following line:\n\n\u002F\u002F const xrpl = require('xrpl')\n\n\n\n\n\u002F\u002F Wrap code in an async function so we can use await\n\nasync function main() {\n\n\n\n\n\u002F\u002F Define the network client\n\nconst client = new xrpl.Client(\"wss:\u002F\u002Fs.altnet.rippletest.net:51233\")\n\nawait client.connect()\n\n\n\n\n\u002F\u002F ... custom code goes here\n\n\n\n\n\u002F\u002F Disconnect when done (If you omit this, Node.js won't end the process)\n\nawait client.disconnect()\n\n}\n\n\n\n\nmain()",{"_key":694,"_type":60,"children":695,"markDefs":700,"style":489},"49fc656d37ab",[696],{"_key":697,"_type":64,"marks":698,"text":699},"39473f5708fe0",[448],"Connecting to XRP Ledger Mainnet",[],{"_key":702,"_type":60,"children":703,"markDefs":717,"style":89},"eb96d1f7655c",[704,708,713],{"_key":705,"_type":64,"marks":706,"text":707},"e41c36d4cd480",[],"The previous section shows you how to connect to the Testnet, which is one of the available ",{"_key":709,"_type":64,"marks":710,"text":712},"e41c36d4cd481",[711],"de2800e5cd61","parallel networks",{"_key":714,"_type":64,"marks":715,"text":716},"e41c36d4cd482",[],". When you're ready to move to production, you'll need to connect to the XRP Ledger Mainnet. You can do that in two ways:",[718],{"_key":711,"_type":87,"href":719,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Fnetworks-and-servers\u002Fparallel-networks\u002F",{"_key":721,"_type":60,"children":722,"markDefs":726,"style":89},"0b7a42624630",[723],{"_key":724,"_type":64,"marks":725,"text":363},"9b290c44d05e0",[],[],{"_key":728,"_type":60,"children":729,"level":388,"listItem":761,"markDefs":762,"style":89},"3f8404ba1cc7",[730,734,739,743,748,752,757],{"_key":731,"_type":64,"marks":732,"text":733},"00e434c25eab0",[],"By ",{"_key":735,"_type":64,"marks":736,"text":738},"00e434c25eab1",[737],"e160e4e742a5","installing the core server",{"_key":740,"_type":64,"marks":741,"text":742},"00e434c25eab2",[]," (rippled) and running a node yourself. The core server connects to the Mainnet by default, but you can ",{"_key":744,"_type":64,"marks":745,"text":747},"00e434c25eab3",[746],"b5a747a1f27c","change the configuration to use Testnet or Devnet",{"_key":749,"_type":64,"marks":750,"text":751},"00e434c25eab4",[],". ",{"_key":753,"_type":64,"marks":754,"text":756},"00e434c25eab5",[755],"52fae25ddbf7","There are good reasons to run your own core server.",{"_key":758,"_type":64,"marks":759,"text":760},"00e434c25eab6",[]," If you run your own server, you can connect to it like so:","bullet",[763,765,767],{"_key":737,"_type":87,"href":764,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Finfrastructure\u002Finstallation\u002F",{"_key":746,"_type":87,"href":766,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Finfrastructure\u002Fconfiguration\u002Fconnect-your-rippled-to-the-xrp-test-net\u002F",{"_key":755,"_type":87,"href":768,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Fnetworks-and-servers\u002F#reasons-to-run-your-own-server",{"_key":770,"_type":60,"children":771,"markDefs":775,"style":89},"5b88f539a951",[772],{"_key":773,"_type":64,"marks":774,"text":363},"96c2266823470",[],[],{"_key":777,"_type":60,"children":778,"markDefs":782,"style":89},"77af8dfae48a",[779],{"_key":780,"_type":64,"marks":781,"text":363},"50066c6b41240",[],[],{"_key":784,"_type":523,"code":785,"markDefs":12},"063cd5b35433","const MY_SERVER = \"ws:\u002F\u002Flocalhost:6006\u002F\"\n\nconst client = new xrpl.Client(MY_SERVER)\n\nawait client.connect()",{"_key":787,"_type":60,"children":788,"markDefs":803,"style":89},"e43c16ea9e4b",[789,794,799],{"_key":790,"_type":64,"marks":791,"text":793},"ebbb6dbec9560",[792],"em","See the example ",{"_key":795,"_type":64,"marks":796,"text":798},"ebbb6dbec9561",[797,792],"b48bfdbb892f","core server config",{"_key":800,"_type":64,"marks":801,"text":802},"ebbb6dbec9562",[792]," file for more information about default values.",[804],{"_key":797,"_type":87,"href":805,"reference":12},"https:\u002F\u002Fgithub.com\u002FXRPLF\u002Frippled\u002Fblob\u002Fc0a0b79d2d483b318ce1d82e526bd53df83a4a2c\u002Fcfg\u002Frippled-example.cfg#L1562",{"_key":807,"_type":60,"children":808,"level":388,"listItem":761,"markDefs":822,"style":89},"c7fe9d64b6a3",[809,813,818],{"_key":810,"_type":64,"marks":811,"text":812},"db0c1700cb690",[],"By using one of the available ",{"_key":814,"_type":64,"marks":815,"text":817},"db0c1700cb691",[816],"c51253d88a2a","public servers",{"_key":819,"_type":64,"marks":820,"text":821},"db0c1700cb692",[],":",[823],{"_key":816,"_type":87,"href":824,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Ftutorials\u002Fpublic-servers\u002F",{"_key":826,"_type":60,"children":827,"markDefs":831,"style":89},"61efa7ce702b",[828],{"_key":829,"_type":64,"marks":830,"text":363},"f0a16b334e4c0",[],[],{"_key":833,"_type":60,"children":834,"markDefs":838,"style":89},"74f04545fe81",[835],{"_key":836,"_type":64,"marks":837,"text":363},"35ef492e1dd10",[],[],{"_key":840,"_type":523,"code":841,"markDefs":12},"06f7fdf9420e","const PUBLIC_SERVER = \"wss:\u002F\u002Fxrplcluster.com\u002F\"\n\nconst client = new xrpl.Client(PUBLIC_SERVER)\n\nawait client.connect()",{"_key":843,"_type":60,"children":844,"markDefs":849,"style":489},"682fd325dc22",[845],{"_key":846,"_type":64,"marks":847,"text":848},"fa27d53667b00",[448],"Get an account",[],{"_key":851,"_type":60,"children":852,"markDefs":865,"style":89},"d538f2edbfd6",[853,857,861],{"_key":854,"_type":64,"marks":855,"text":856},"183a6a61aa560",[],"The xrpl.js library has a ",{"_key":858,"_type":64,"marks":859,"text":860},"3a186ddca569",[523],"Wallet",{"_key":862,"_type":64,"marks":863,"text":864},"e7bb3264780a",[]," class for handling the keys and address of an XRPL account. On Testnet, you can fund a new account like this:",[],{"_key":867,"_type":60,"children":868,"markDefs":872,"style":89},"a5b77f5d63bf",[869],{"_key":870,"_type":64,"marks":871,"text":363},"da465598a47d0",[],[],{"_key":874,"_type":523,"code":875,"markDefs":12},"d3d200b8c5d5","\u002F\u002F Create a wallet and fund it with the Testnet faucet:\n\nconst fund_result = await client.fundWallet()\n\nconst test_wallet = fund_result.wallet\n\nconsole.log(fund_result)",{"_key":877,"_type":60,"children":878,"markDefs":890,"style":89},"90f587c0d22e",[879,883,886],{"_key":880,"_type":64,"marks":881,"text":882},"aab630686dc50",[],"\nIf you only want to generate keys, create a new ",{"_key":884,"_type":64,"marks":885,"text":860},"bfa66fc39e0a",[523],{"_key":887,"_type":64,"marks":888,"text":889},"201fdbca95bf",[]," instance like this:",[],{"_key":892,"_type":60,"children":893,"markDefs":897,"style":89},"4367d3803605",[894],{"_key":895,"_type":64,"marks":896,"text":363},"c5b54d32051a0",[],[],{"_key":899,"_type":523,"code":900,"markDefs":12},"41e7d8787303","const test_wallet = xrpl.Wallet.generate()",{"_key":902,"_type":60,"children":903,"markDefs":925,"style":89},"e99ee7582488",[904,908,913,917,921],{"_key":905,"_type":64,"marks":906,"text":907},"1d5d4768bfe80",[],"Or, if you already have a seed encoded in ",{"_key":909,"_type":64,"marks":910,"text":912},"1d5d4768bfe81",[911],"751ecfad92f2","base58",{"_key":914,"_type":64,"marks":915,"text":916},"1d5d4768bfe82",[],", you can make a ",{"_key":918,"_type":64,"marks":919,"text":920},"1f78957c6936",[523],"Wallet ",{"_key":922,"_type":64,"marks":923,"text":924},"588a826400d9",[],"instance from it like this:",[926],{"_key":911,"_type":87,"href":927,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Freferences\u002Fprotocol\u002Fdata-types\u002Fbase58-encodings\u002F",{"_key":929,"_type":523,"code":930,"markDefs":12},"36f99ee8af5b","const test_wallet = xrpl.Wallet.fromSeed(\"sn3nxiW7v8KXzPzAqzyHXbSSKNuN9\") \u002F\u002F Test secret; don't use for real",{"_key":932,"_type":60,"children":933,"markDefs":938,"style":489},"004be5bae53c",[934],{"_key":935,"_type":64,"marks":936,"text":937},"e545b231bcba0",[448],"Query the XRP Ledger",[],{"_key":940,"_type":60,"children":941,"markDefs":969,"style":89},"7528e5ff8677",[942,946,949,953,957,961,966],{"_key":943,"_type":64,"marks":944,"text":945},"0d0fea7e4cf60",[],"Use the ",{"_key":947,"_type":64,"marks":948,"text":632},"ca2eda789756",[523],{"_key":950,"_type":64,"marks":951,"text":952},"4fe7bafe747d",[]," instance’s ",{"_key":954,"_type":64,"marks":955,"text":956},"4f1a0a2751ba",[523],"request()",{"_key":958,"_type":64,"marks":959,"text":960},"f36de2cf8020",[]," method to access the XRPL's ",{"_key":962,"_type":64,"marks":963,"text":965},"0d0fea7e4cf61",[964],"eedb30aa1ee2","WebSocket API",{"_key":967,"_type":64,"marks":968,"text":821},"0d0fea7e4cf62",[],[970],{"_key":964,"_type":87,"href":971,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Freferences\u002Fhttp-websocket-apis\u002Fapi-conventions\u002Frequest-formatting\u002F",{"_key":973,"_type":60,"children":974,"markDefs":978,"style":89},"db6da8467edc",[975],{"_key":976,"_type":64,"marks":977,"text":363},"56b8eda4d2eb0",[],[],{"_key":980,"_type":523,"code":981,"markDefs":12},"b809ff20b706","\u002F\u002F Get info from the ledger about the address we just funded\n\nconst response = await client.request({\n\n\"command\": \"account_info\",\n\n\"account\": test_wallet.address,\n\n\"ledger_index\": \"validated\"\n\n})\n\nconsole.log(response)",{"_key":983,"_type":60,"children":984,"markDefs":988,"style":89},"97d377e4dbf0",[985],{"_key":986,"_type":64,"marks":987,"text":363},"de4cb22194a40",[],[],{"_key":990,"_type":60,"children":991,"markDefs":996,"style":489},"d8f3fec21779",[992],{"_key":993,"_type":64,"marks":994,"text":995},"b65d862094d30",[448],"Listen for events",[],{"_key":998,"_type":60,"children":999,"markDefs":1039,"style":89},"bd51d3463702",[1000,1004,1009,1013,1018,1022,1027,1031,1035],{"_key":1001,"_type":64,"marks":1002,"text":1003},"d6cb2addb8410",[],"You can set up handlers for various types of events in xrpl.js, such as whenever the XRP Ledger's ",{"_key":1005,"_type":64,"marks":1006,"text":1008},"d6cb2addb8411",[1007],"11998ec02b2b","consensus process",{"_key":1010,"_type":64,"marks":1011,"text":1012},"d6cb2addb8412",[]," produces a new ",{"_key":1014,"_type":64,"marks":1015,"text":1017},"d6cb2addb8413",[1016],"9587645b861f","ledger version",{"_key":1019,"_type":64,"marks":1020,"text":1021},"d6cb2addb8414",[],". To do that, first call the ",{"_key":1023,"_type":64,"marks":1024,"text":1026},"d6cb2addb8415",[1025],"f962b897c697","subscribe method",{"_key":1028,"_type":64,"marks":1029,"text":1030},"d6cb2addb8416",[]," to get the type of events you want, then attach an event handler using the ",{"_key":1032,"_type":64,"marks":1033,"text":1034},"f9393a3eb044",[523],"on(eventType, callback)",{"_key":1036,"_type":64,"marks":1037,"text":1038},"564148d89563",[]," method of the client.",[1040,1042,1044],{"_key":1007,"_type":87,"href":1041,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Fconsensus-protocol\u002F",{"_key":1016,"_type":87,"href":1043,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Fconcepts\u002Fledgers\u002F",{"_key":1025,"_type":87,"href":1045,"reference":12},"https:\u002F\u002Fxrpl.org\u002Fdocs\u002Freferences\u002Fhttp-websocket-apis\u002Fpublic-api-methods\u002Fsubscription-methods\u002Fsubscribe\u002F",{"_key":1047,"_type":60,"children":1048,"markDefs":1052,"style":89},"48ee5d2008c3",[1049],{"_key":1050,"_type":64,"marks":1051,"text":363},"4ccdee21ea1b0",[],[],{"_key":1054,"_type":523,"code":1055,"markDefs":12},"5e252944d8e4","\u002F\u002F Listen to ledger close events\n\nclient.request({\n\n\"command\": \"subscribe\",\n\n\"streams\": [\"ledger\"]\n\n})\n\nclient.on(\"ledgerClosed\", async (ledger) => {\n\nconsole.log(`Ledger #${ledger.ledger_index} validated with ${ledger.txn_count} transactions!`)\n\n})\n\n",{"_key":1057,"_type":60,"children":1058,"markDefs":1062,"style":89},"40313d11e337",[1059],{"_key":1060,"_type":64,"marks":1061,"text":363},"7639f26f5eda0",[],[],{"_key":1064,"_type":60,"children":1065,"markDefs":1088,"style":89},"475923d1db81",[1066,1070,1075,1079,1084],{"_key":1067,"_type":64,"marks":1068,"text":1069},"0e47b38888f00",[],"You can take a closer look at a ",{"_key":1071,"_type":64,"marks":1072,"text":1074},"0e47b38888f01",[1073],"64483652aee4","curated list",{"_key":1076,"_type":64,"marks":1077,"text":1078},"0e47b38888f02",[]," of some of the projects and applications that leverage JavaScript. One of these applications is ",{"_key":1080,"_type":64,"marks":1081,"text":1083},"0e47b38888f03",[1082],"925c3afa30f4","GemWallet",{"_key":1085,"_type":64,"marks":1086,"text":1087},"0e47b38888f04",[],", a non-custodial crypto wallet that opens the gateway to the XRPL while embracing the realm of decentralized finance and NFTs. GemWallet bridges technology, security, and user experience to enable more seamless engagement with crypto assets and DeFi protocols. GemWallet is privacy-focused; it doesn't track any personally identifiable information, wallet addresses, or asset balances.",[1089,1091],{"_key":1073,"_type":87,"href":1090,"reference":12},"https:\u002F\u002Fgithub.com\u002FXRPLF\u002Fxrpl.js\u002Fblob\u002Fmain\u002FAPPLICATIONS.md",{"_key":1082,"_type":87,"href":1092,"reference":12},"https:\u002F\u002Fgemwallet.app\u002F",{"_key":1094,"_type":60,"children":1095,"markDefs":1100,"style":1101},"e74f647bad33",[1096],{"_key":1097,"_type":64,"marks":1098,"text":1099},"76ca7725de78",[],"\"As the founder of GemWallet.app, which is the biggest web wallet on the XRPL, my journey into development started with a strong foundation in Web2 skills, particularly in JavaScript and TypeScript. Transitioning these skills to the Web3 space was both challenging and rewarding. One of the biggest hurdles was understanding the nuances of blockchain technology and how it integrates with existing web technologies under the hood. However, the wealth of resources and community support available made the learning curve manageable. Building GemWallet.app has been an incredible experience, and I found that having a solid grasp of JavaScript was invaluable in creating a seamless user experience while leveraging the unique capabilities of blockchain technology.\" —Florian Bouron, GemWallet Founder",[],"blockquote",{"_key":1103,"_type":60,"children":1104,"markDefs":1114,"style":89},"d27d297675b7",[1105,1110],{"_key":1106,"_type":64,"marks":1107,"text":1109},"1ccc3bf8a3790",[1108],"cfd1edc30a1a","Crossmark",{"_key":1111,"_type":64,"marks":1112,"text":1113},"1ccc3bf8a3791",[]," is another example: a browser extension wallet built for interacting with the XRP Ledger. Crossmark adds to an already diverse network of wallets and provides tooling for developers building decentralized applications on sidechains. The wallet will provide an easy way to switch between custom networks and will help bridge communities and cross-chain features. The developers behind Crossmark have been longtime supporters of the XRPL, citing its speed, efficiency, and decentralization. Crossmark is built on the XRPL for these unique characteristics. Crossmark will provide a unique utility offering sophisticated financial operations, demanding secure and quick interactions.",[1115],{"_key":1108,"_type":87,"href":1116,"reference":12},"https:\u002F\u002Fcrossmark.io\u002F",{"_key":1118,"_type":1119,"markDefs":12,"url":1120},"902d82ad964d","embed","https:\u002F\u002Fplayer.vimeo.com\u002Fvideo\u002F983225131?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\"",{"_key":1122,"_type":60,"children":1123,"markDefs":1128,"style":68},"2edb700c333d",[1124],{"_key":1125,"_type":64,"marks":1126,"text":1127},"2130536d19c20",[],"Resources to get you started",[],{"_key":1130,"_type":60,"children":1131,"markDefs":1141,"style":89},"443579d6fb6b",[1132,1137],{"_key":1133,"_type":64,"marks":1134,"text":1136},"d039ca71f76f0",[1135],"41168ce52676","XRPL Learning Portal",{"_key":1138,"_type":64,"marks":1139,"text":1140},"d039ca71f76f1",[]," is an interactive tool that simplifies the learning experience for building on the XRPL. The XRPL Learning Portal offers an easy and interactive way for developers to get started in their Web3 journey. Whether you want to start by getting acquainted with the basics of crypto and blockchain or jump right into learning how to code on the XRPL, you can create your learning path with this new platform.",[1142],{"_key":1135,"_type":87,"href":1143,"reference":12},"https:\u002F\u002Flearn.xrpl.org\u002F?utm_source=blog&utm_medium=stack_overflow&utm_campaign=bridge_gap_between_web2_and_web3&utm_content=Learning_portal_hyperlink",{"_key":1145,"_type":60,"children":1146,"markDefs":1160,"style":89},"d81ad846225c",[1147,1151,1156],{"_key":1148,"_type":64,"marks":1149,"text":1150},"a1a22c43dc020",[],"As part of the XRPL Learning Portal’s commitment to empowering developers to transition seamlessly from Web2 to Web3, we are excited to highlight a newly added course, ",{"_key":1152,"_type":64,"marks":1153,"text":1155},"a1a22c43dc021",[1154],"0c80e3e124e7","“Blockchain for Business.”",{"_key":1157,"_type":64,"marks":1158,"text":1159},"a1a22c43dc022",[]," This comprehensive course is designed to bridge your existing Web2 knowledge with practical applications on the XRPL, enabling you to build robust blockchain solutions for your business.",[1161],{"_key":1154,"_type":87,"href":1162,"reference":12},"https:\u002F\u002Flearn.xrpl.org\u002Fcourse\u002Fblockchain-for-business\u002F?utm_source=blog&utm_medium=stack_overflow&utm_campaign=bridge_gap_between_web2_and_web3&utm_content=build_a_web3_business_hyperlink2",{"_key":1164,"_type":60,"children":1165,"markDefs":1170,"style":68},"83110534fd8b",[1166],{"_key":1167,"_type":64,"marks":1168,"text":1169},"d23506caeb5b0",[],"Course overview",[],{"_key":1172,"_type":60,"children":1173,"level":388,"listItem":761,"markDefs":1182,"style":89},"7e054c8ac53c",[1174,1178],{"_key":1175,"_type":64,"marks":1176,"text":1177},"d1cb709330dd0",[448],"Intro to Blockchain: ",{"_key":1179,"_type":64,"marks":1180,"text":1181},"d1cb709330dd1",[],"Understand the basic principles and potential impact of blockchain technology on businesses. This module will lay the foundation for your blockchain journey, making complex concepts accessible and relevant.",[],{"_key":1184,"_type":60,"children":1185,"level":388,"listItem":761,"markDefs":1194,"style":89},"48c3ee9186ed",[1186,1190],{"_key":1187,"_type":64,"marks":1188,"text":1189},"7e81ac6ec2b40",[448],"Introduction to DeFi and the XRPL DEX: ",{"_key":1191,"_type":64,"marks":1192,"text":1193},"7e81ac6ec2b41",[],"Begin your exploration of decentralized finance (DeFi) and XRPL's own decentralized exchange. Learn how XRPL’s DEX operates and how it can benefit your business with efficient, transparent financial transactions.",[],{"_key":1196,"_type":60,"children":1197,"level":388,"listItem":761,"markDefs":1206,"style":89},"b5875ee9797a",[1198,1202],{"_key":1199,"_type":64,"marks":1200,"text":1201},"8127f0d4dddd0",[448],"Exchanging Tokens on the DEX: ",{"_key":1203,"_type":64,"marks":1204,"text":1205},"8127f0d4dddd1",[],"Master the XRPL DEX’s advanced features like pathfinding and auto-bridging to secure the best rates for token exchanges and trades. This segment ensures you can leverage XRPL’s technology for optimal transaction outcomes.",[],{"_key":1208,"_type":60,"children":1209,"level":388,"listItem":761,"markDefs":1218,"style":89},"598acd6ccbc1",[1210,1214],{"_key":1211,"_type":64,"marks":1212,"text":1213},"f8513a4cc5b00",[448],"What are Stablecoins?: ",{"_key":1215,"_type":64,"marks":1216,"text":1217},"f8513a4cc5b01",[],"Understand one of crypto's most powerful tools: stablecoins. Learn how they work and how they can be utilized by businesses, traders, and everyday people for stability and efficiency in financial operations.",[],{"_key":1220,"_type":60,"children":1221,"markDefs":1226,"style":89},"3c4951ff1ada",[1222],{"_key":1223,"_type":64,"marks":1224,"text":1225},"6411ad11ec830",[],"This course is an excellent opportunity for Web2 developers to expand their skill set, leveraging familiar programming languages and tools to build on the XRPL. By integrating your existing knowledge with blockchain technology, you can drive innovation and create value in the emerging Web3 landscape.",[],{"_key":1228,"_type":60,"children":1229,"markDefs":1251,"style":89},"7beab77213f9",[1230,1234,1239,1243,1247],{"_key":1231,"_type":64,"marks":1232,"text":1233},"bc677ed358c10",[],"Ready to explore how you can build Web3 apps using the languages you already know? Enroll in the XRPL Learning Portal’s ",{"_key":1235,"_type":64,"marks":1236,"text":1238},"bc677ed358c11",[1237],"124bd774a4c6","“Blockchain for Business”",{"_key":1240,"_type":64,"marks":1241,"text":1242},"bc677ed358c12",[]," course today. Visit the ",{"_key":1244,"_type":64,"marks":1245,"text":1136},"bc677ed358c13",[1246],"cfacfe65eda6",{"_key":1248,"_type":64,"marks":1249,"text":1250},"bc677ed358c14",[]," to get started and follow @RippleXDev on Twitter for the latest updates and insights.",[1252,1253],{"_key":1237,"_type":87,"href":1162,"reference":12},{"_key":1246,"_type":87,"href":1254,"reference":12},"https:\u002F\u002Flearn.xrpl.org\u002F",true,"2024\u002F07\u002F16","You’re familiar with older web and pre-web languages like JavaScript and Java. Did you know that you can use these well-known languages with Web3 technologies?",{"_type":277,"asset":1259,"attribution":1261},{"_ref":1260,"_type":280},"image-a6bbe54334f050b49e7edf728766f33411852748-13396x7384-jpg","Alexandra Francis","2024-07-16T16:00:00.000Z",{"_type":10,"current":1264},"how-to-bridge-the-gap-between-web2-skills-and-web3-workflows",[1266,1273,1277,1281,1285,1290],{"_createdAt":1267,"_id":1268,"_rev":1269,"_type":1270,"_updatedAt":1267,"slug":1271,"title":1272},"2023-05-23T16:43:21Z","wp-tagcat-se-tech","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":1272},"se-tech",{"_createdAt":1267,"_id":1274,"_rev":1269,"_type":1270,"_updatedAt":1267,"slug":1275,"title":1276},"wp-tagcat-se-stackoverflow",{"current":1276},"se-stackoverflow",{"_createdAt":1267,"_id":1278,"_rev":1269,"_type":1270,"_updatedAt":1267,"slug":1279,"title":1280},"wp-tagcat-web3",{"current":1280},"web3",{"_createdAt":1267,"_id":1282,"_rev":1269,"_type":1270,"_updatedAt":1267,"slug":1283,"title":1284},"wp-tagcat-ripple",{"current":1284},"ripple",{"_createdAt":1267,"_id":1286,"_rev":1269,"_type":1270,"_updatedAt":1267,"slug":1287,"title":1289},"wp-tagcat-partner-content",{"current":1288},"partner-content","Partner Content",{"_createdAt":1267,"_id":1291,"_rev":1269,"_type":1270,"_updatedAt":1267,"slug":1292,"title":1293},"wp-tagcat-blockchain",{"current":1293},"blockchain","How to bridge the gap between Web2 skills and Web3 workflows",[1296,1302,1308,1314],{"_id":1297,"publishedAt":1298,"slug":1299,"sponsored":12,"title":1301},"28e560af-f0aa-4d46-bd90-f435ad604aa7","2026-06-26T14:00:27.102Z",{"_type":10,"current":1300},"paging-charity-how-can-engineering-leaders-avoid-becoming-bond-villains","Paging Charity! How can engineering leaders avoid becoming Bond villains?",{"_id":1303,"publishedAt":1304,"slug":1305,"sponsored":12,"title":1307},"4b22c2a3-3779-4966-93eb-5230391dbdce","2026-06-23T14:08:58.595Z",{"_type":10,"current":1306},"your-ai-shipped-a-backend-that-boots-that-is-the-whole-problem","Your AI shipped a backend that boots. That is the whole problem.",{"_id":1309,"publishedAt":1310,"slug":1311,"sponsored":12,"title":1313},"5cf362e1-fe7b-45af-b69c-914731c6a052","2026-06-23T14:00:00.000Z",{"_type":10,"current":1312},"the-2026-developer-survey-is-now-open-for-human-developers-only","The 2026 Developer Survey is now open (for human developers only)!",{"_id":1315,"publishedAt":1316,"slug":1317,"sponsored":12,"title":1319},"30b995f7-7cb9-4dd8-bf71-d0685940a32b","2026-06-19T14:00:00.000Z",{"_type":10,"current":1318},"dispatches-from-o-reilly-from-capabilities-to-responsibilities","Dispatches from O'Reilly: From capabilities to responsibilities",{"data":1321,"sourceMap":-1},{"count":1322,"lastTimestamp":1323},2,"2024-10-17T15:02:22Z"]