{"id":10064,"date":"2024-11-09T20:39:47","date_gmt":"2024-11-09T20:39:47","guid":{"rendered":"https:\/\/metaschool.so\/articles\/?p=10064"},"modified":"2024-11-12T11:46:20","modified_gmt":"2024-11-12T11:46:20","slug":"understanding-web3-libraries","status":"publish","type":"post","link":"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/","title":{"rendered":"Top 10 Web3 Libraries: Comprehensive Guide 2024"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_56_1 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Web3js\" title=\"Web3.js\">Web3.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Ethersjs\" title=\"Ethers.js\">Ethers.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Ankr\" title=\"Ankr\">Ankr<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#libp2p\" title=\"libp2p\">libp2p<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Lightjs\" title=\"Light.js\">Light.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Web3j\" title=\"Web3j\">Web3j<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Web3py\" title=\"Web3.py\">Web3.py<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Whal3s\" title=\"Whal3s\">Whal3s<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Etherspot_TransactionKit\" title=\"Etherspot TransactionKit\">Etherspot TransactionKit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Moralis_Streams_API\" title=\"Moralis Streams API\">Moralis Streams API<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/metaschool.so\/articles\/understanding-web3-libraries\/#Conclusion\" title=\"Conclusion\">Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Web3 libraries serve as an essential tool in the field of web3 development, enabling developers to not just create but also manage decentralized applications (dApps) that operate on\u00a0blockchain\u00a0technology. These libraries provide a variety of tools and frameworks that simplify the interaction between the users of these applications and the underlying blockchain network. They act as a middle layer between the user and the network in general. These web3 libraries ease the implementation of the dApp by the developers by offering developers a more accessible and manageable means to build, deploy, and interact with smart contracts and other features on the network.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Web3js\"><\/span><a href=\"https:\/\/web3js.readthedocs.io\/en\/v1.10.0\/\" data-type=\"link\" data-id=\"https:\/\/web3js.readthedocs.io\/en\/v1.10.0\/\" target=\"_blank\" rel=\"noopener\">Web3.js<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><strong>web3.js<\/strong> is the most widely used JavaScript library for interacting with Ethereum and EVM-compatible blockchains. It provides a large variety of tools and features for building decentralized applications.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It supports a wide range of Ethereum and EVM-related functionalities which include smart contract interactions, transactions, and accessing data onchain.<\/li>\n\n\n\n<li>It provides a consistent and intuitive API, making it easier for developers to work with Ethereum and EVM-based blockchains.<\/li>\n\n\n\n<li>It is known for its modular design, allowing developers the ease to customize and extend the library as per the need of the application.<\/li>\n<\/ul>\n\n\n\n<p><strong>Implementation of web3.js library<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import Web3 from 'web3';\n\n\/\/ Initialize Web3\nconst web3 = new Web3('https:\/\/mainnet.infura.io\/v3\/your-api-key');\n\n\/\/ Create contract instance\nconst contract = new web3.eth.Contract(ABI, contractAddress);\n\n\/\/ Call contract method\nconst result = await contract.methods.getValue().call();\nconsole.log('Contract value:', result);\n\n\/\/ Send transaction\nconst tx = await contract.methods.setValue(newValue).send({\n  from: userAddress,\n  gas: 2000000,\n});\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Web3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;web3&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Initialize Web3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">web3<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Web3<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;https:\/\/mainnet.infura.io\/v3\/your-api-key&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Create contract instance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">contract<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">web3<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">eth<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Contract<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #4FC1FF\">ABI<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">contractAddress<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Call contract method<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">result<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">contract<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">methods<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">getValue<\/span><span style=\"color: #D4D4D4\">().<\/span><span style=\"color: #DCDCAA\">call<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;Contract value:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">result<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Send transaction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">tx<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">contract<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">methods<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">setValue<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">newValue<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">send<\/span><span style=\"color: #D4D4D4\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">from:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">userAddress<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">gas:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #B5CEA8\">2000000<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ethersjs\"><\/span><a href=\"https:\/\/docs.ethers.org\/v5\/\" data-type=\"link\" data-id=\"https:\/\/docs.ethers.org\/v5\/\" target=\"_blank\" rel=\"noopener\">Ethers.js<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Another very popular name among web3 libraries is the ether.js library for Ethereum and EVM-related interactions. It is known for its comprehensive functionality, ease of implementation, and a strong focus on security.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It provides a complete set of tools for Ethereum development which includes features like transaction handling, interacting with smart contracts, and wallet management.<\/li>\n\n\n\n<li>It emphasizes highly on security and stability, with a focus on minimizing vulnerability attacks like 51%, re-entrancy attacks, and so on.<\/li>\n\n\n\n<li>It also offers modular design like web3.js, allowing developers to include only the necessary components in their applications as per the requirement.<\/li>\n<\/ul>\n\n\n\n<p><strong>Implementation of ethers.js library<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Initialize provider\nconst provider = new ethers.providers.JsonRpcProvider('https:\/\/mainnet.infura.io\/v3\/your-api-key');\n\n\/\/ Connect to contract\nconst contract = new ethers.Contract(address, abi, provider);\n\n\/\/ Read contract data\nconst data = await contract.getData();\n\n\/\/ Connect with signer for transactions\nconst signer = provider.getSigner();\nconst contractWithSigner = contract.connect(signer);\nawait contractWithSigner.setData(newValue);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Initialize provider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">provider<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">ethers<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">providers<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">JsonRpcProvider<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;https:\/\/mainnet.infura.io\/v3\/your-api-key&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Connect to contract<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">contract<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">ethers<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Contract<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">address<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">abi<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">provider<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Read contract data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">data<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">contract<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">getData<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Connect with signer for transactions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">signer<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">provider<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">getSigner<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">contractWithSigner<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">contract<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">connect<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">signer<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">contractWithSigner<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">setData<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">newValue<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ankr\"><\/span><a href=\"https:\/\/www.ankr.com\/\" data-type=\"link\" data-id=\"https:\/\/www.ankr.com\/\" target=\"_blank\" rel=\"noopener\">Ankr<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ankr is an all-in-one web3 development tool, it isn&#8217;t just a library but also offers a wide set of tools and features to build and manage applications across multiple blockchain ecosystems and not just on Ethereum. It provides a versatile platform for deploying applications focussing on scalability, security, and performance of the dApp.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It provides multi-chain support for popular networks like Ethereum, Polygon, and more.<\/li>\n\n\n\n<li>It takes care of infrastructure-related services that include load-balanced RPC nodes and hosting solutions.<\/li>\n\n\n\n<li>It is compatible with multiple blockchain networks, thus it provides cross-chain communication and message-passing protocols in an application.<\/li>\n<\/ul>\n\n\n\n<p><strong>Implementation of Ankr library<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Initialize Ankr provider\nconst provider = new AnkrProvider('your_api_key');\n\n\/\/ Example of connecting to multiple chains\nconst ethNode = provider.connect('eth');\nconst polygonNode = provider.connect('polygon');\n\n\/\/ Making a simple RPC call\nconst balance = await ethNode.getBalance('your_wallet_address');\nconsole.log('ETH Balance:', ethers.utils.formatEther(balance));\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Initialize Ankr provider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">provider<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">AnkrProvider<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;your_api_key&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Example of connecting to multiple chains<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">ethNode<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">provider<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">connect<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;eth&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">polygonNode<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">provider<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">connect<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;polygon&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Making a simple RPC call<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">balance<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">ethNode<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">getBalance<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;your_wallet_address&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;ETH Balance:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">ethers<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">utils<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">formatEther<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">balance<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"libp2p\"><\/span><a href=\"https:\/\/libp2p.io\/\" data-type=\"link\" data-id=\"https:\/\/libp2p.io\/\" target=\"_blank\" rel=\"noopener\">libp2p<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>libp2p library is a modular networking stack perfect for building peer-to-peer applications and is widely used by various protocols like IPFS, Polkadot, and more. It provides a wide variety of tools for developers to be able to create robust and adaptable peer-to-peer networks.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1522\" height=\"1430\" src=\"https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/11\/image-3.png\" alt=\"web3 libraries - libp2p\" class=\"wp-image-10072\" srcset=\"https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/11\/image-3.png 1522w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/11\/image-3-300x282.png 300w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/11\/image-3-1024x962.png 1024w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/11\/image-3-768x722.png 768w, https:\/\/metaschool.so\/articles\/wp-content\/uploads\/2024\/11\/image-3-1320x1240.png 1320w\" sizes=\"auto, (max-width: 1522px) 100vw, 1522px\" \/><\/figure>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It provides support for various programming languages including JavaScript, Rust, and Go.<\/li>\n\n\n\n<li>It has a modular architecture providing encrypted connections, and feasibility for high latency scenarios.<\/li>\n\n\n\n<li>It has efficient peer discovery and routing mechanisms, also providing runtime freedom and protocol muxing.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Basic libp2p node setup\nconst node = await Libp2p.create({\n  addresses: {\n    listen: ['\/ip4\/0.0.0.0\/tcp\/0']\n  },\n  modules: {\n    transport: [TCP],\n    connEncryption: [NOISE],\n    streamMuxer: [MPLEX]\n  }\n});\n\n\/\/ Start the node\nawait node.start();\nconsole.log('Node started with ID:', node.peerId.toString());\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Basic libp2p node setup<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">node<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Libp2p<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">create<\/span><span style=\"color: #D4D4D4\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">addresses:<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">listen:<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #CE9178\">&#39;\/ip4\/0.0.0.0\/tcp\/0&#39;<\/span><span style=\"color: #D4D4D4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">modules:<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">transport:<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">TCP<\/span><span style=\"color: #D4D4D4\">],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">connEncryption:<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">NOISE<\/span><span style=\"color: #D4D4D4\">],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">streamMuxer:<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #4FC1FF\">MPLEX<\/span><span style=\"color: #D4D4D4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Start the node<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">node<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">start<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;Node started with ID:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">node<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">peerId<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">toString<\/span><span style=\"color: #D4D4D4\">());<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Lightjs\"><\/span><a href=\"https:\/\/github.com\/openethereum\/js-libs\/tree\/master\/packages\/light.js\" data-type=\"link\" data-id=\"https:\/\/github.com\/openethereum\/js-libs\/tree\/master\/packages\/light.js\" target=\"_blank\" rel=\"noopener\">Light.js<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>It is a lightweight reactive JavaScript library for Ethereum and EVM-compatible chains. It is widely used for building clients and mobile applications.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Supports filtering and caching of data to further improve the performance of the application.<\/li>\n\n\n\n<li>It is designed with a focus on performance optimization, reducing the need for synchronization of a full node on Ethereum.<\/li>\n\n\n\n<li>It provides a high-level API for common Ethereum operations, such as querying balances and subscribing to events.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Initialize light.js\nconst light = new Light();\n\n\/\/ Subscribe to latest block\nlight.blocks$.subscribe(block =&gt; {\n  console.log('New block:', block.number);\n});\n\n\/\/ Watch account balance\nlight.balanceOf$('0x...').subscribe(balance =&gt; {\n  console.log('Balance changed:', balance);\n});\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Initialize light.js<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">light<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Light<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Subscribe to latest block<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">light<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">blocks$<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">subscribe<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">block<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;New block:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">block<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">number<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Watch account balance<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">light<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">balanceOf$<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;0x...&#39;<\/span><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">subscribe<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">balance<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;Balance changed:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">balance<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Web3j\"><\/span><a href=\"https:\/\/docs.web3j.io\/4.11.0\/\" data-type=\"link\" data-id=\"https:\/\/docs.web3j.io\/4.11.0\/\" target=\"_blank\" rel=\"noopener\">Web3j<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>It is based on the programming language Java for Ethereum interaction,  very widely used among Android developers. It is especially popular among Java and Android developers due to its ease of implementation and effectiveness with the application.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It offers a reactive programming model using RxJava for efficient data handling in the applications.<\/li>\n\n\n\n<li>It provides a large set of tools for working with smart contracts, handling transactions, and accessing data on-chain.<\/li>\n\n\n\n<li>It supports a wide range of Ethereum and EVM-compatible networks.<\/li>\n\n\n\n<li>It includes various utilities for managing wallet connection and credentials, as well as signing transactions on-chain.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Initialize web3j\nWeb3j web3 = Web3j.build(new HttpService(&quot;https:\/\/mainnet.infura.io\/v3\/your-api-key&quot;));\n\n\/\/ Load credentials\nCredentials credentials = WalletUtils.loadCredentials(&quot;password&quot;, &quot;wallet.json&quot;);\n\n\/\/ Send transaction\nTransactionReceipt receipt = Transfer.sendFunds(\n    web3, credentials,\n    &quot;0x...&quot;, \/\/ to address\n    BigDecimal.valueOf(1.0), \/\/ value in ether\n    Convert.Unit.ETHER     \/\/ unit\n).send();\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Initialize web3j<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">Web3j<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">web3<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">Web3j<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">build<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">HttpService<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;https:\/\/mainnet.infura.io\/v3\/your-api-key&quot;<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Load credentials<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">Credentials<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">credentials<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">WalletUtils<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">loadCredentials<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;password&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;wallet.json&quot;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Send transaction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">TransactionReceipt<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">receipt<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">Transfer<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">sendFunds<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">web3<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">credentials<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #CE9178\">&quot;0x...&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #6A9955\">\/\/ to address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">BigDecimal<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">valueOf<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">1.0<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #6A9955\">\/\/ value in ether<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">Convert<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Unit<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #4FC1FF\">ETHER<\/span><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #6A9955\">\/\/ unit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">).<\/span><span style=\"color: #DCDCAA\">send<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Web3py\"><\/span><a href=\"https:\/\/web3py.readthedocs.io\/en\/stable\/\" data-type=\"link\" data-id=\"https:\/\/web3py.readthedocs.io\/en\/stable\/\" target=\"_blank\" rel=\"noopener\">Web3.py<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>It is a clone of web3.js but implemented in Python programming language and thus is widely used among python developers. It provides a similar set of functionalities for interacting with EVM-compatible blockchains.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It provides smooth integration with all Python libraries and frameworks.<\/li>\n\n\n\n<li>It provides support to Ethereum and EVM Compatible, including smart contract interactions, transactions, and blockchain data access<\/li>\n\n\n\n<li>Provides a Python interface for working with Ethereum, making it intuitive for developers familiar with the Python ecosystem<\/li>\n\n\n\n<li>Offers utilities for managing wallets, signing transactions, and interacting with various Ethereum clients<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"from web3 import Web3\n\n# Initialize Web3\nw3 = Web3(Web3.HTTPProvider('https:\/\/mainnet.infura.io\/v3\/your-api-key'))\n\n# Check connection\nprint(w3.isConnected())\n\n# Get latest block\nlatest_block = w3.eth.get_block('latest')\nprint(f&quot;Latest block number: {latest_block['number']}&quot;)\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">web3<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Web3<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"># <\/span><span style=\"color: #9CDCFE\">Initialize<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Web3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">w3<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">Web3<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">Web3<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">HTTPProvider<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;https:\/\/mainnet.infura.io\/v3\/your-api-key&#39;<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"># <\/span><span style=\"color: #9CDCFE\">Check<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">connection<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">w3<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">isConnected<\/span><span style=\"color: #D4D4D4\">())<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"># <\/span><span style=\"color: #9CDCFE\">Get<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">latest<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">block<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">latest_block<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">w3<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">eth<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">get_block<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;latest&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">f<\/span><span style=\"color: #CE9178\">&quot;Latest block number: {latest_block[&#39;number&#39;]}&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Whal3s\"><\/span><a href=\"https:\/\/www.whal3s.xyz\/\" data-type=\"link\" data-id=\"https:\/\/www.whal3s.xyz\/\" target=\"_blank\" rel=\"noopener\">Whal3s<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Whal3s is a developer platform focused on simplifying the creation, delivery, and management of token utilities. It supports a range of blockchain networks, making it a versatile tool for token-centric projects.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It focuses on reducing the complexity of token-related development tasks, allowing developers to focus on the implementation of the logic for the application.<\/li>\n\n\n\n<li>It provides a suite of tools and services from token creation to distribution, and management of assets.<\/li>\n\n\n\n<li>It supports multiple blockchain networks, including Ethereum, Polygon, and other EVM-compatible chains.<\/li>\n\n\n\n<li>It offers a flexible and customizable environment for developers to build and deploy token-based applications as per their requirements.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Initialize Whal3s\nconst whal3s = new Whal3s('your-api-key');\n\n\/\/ Create utility\nconst utility = await whal3s.createUtility({\n    name: 'My Token Utility',\n    chain: 'ethereum',\n    contractAddress: '0x...'\n});\n\n\/\/ Verify token ownership\nconst verification = await utility.verify(walletAddress);\nconsole.log('Token verified:', verification.isValid);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Initialize Whal3s<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">whal3s<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Whal3s<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;your-api-key&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Create utility<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">utility<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">whal3s<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">createUtility<\/span><span style=\"color: #D4D4D4\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">name:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;My Token Utility&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">chain:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;ethereum&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">contractAddress:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;0x...&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Verify token ownership<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">verification<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">utility<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">verify<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">walletAddress<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;Token verified:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">verification<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">isValid<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Etherspot_TransactionKit\"><\/span><a href=\"https:\/\/etherspot.io\/transactionkit\/\" data-type=\"link\" data-id=\"https:\/\/etherspot.io\/transactionkit\/\" target=\"_blank\" rel=\"noopener\">Etherspot TransactionKit<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Etherspot TransactionKit is the world&#8217;s first React library that simplifies the process of managing transactions across multiple blockchain networks. It aims to provide a seamless and efficient way for React developers to integrate Web3 functionality into their applications.<\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It eliminates the low-level complexities of blockchain development.<\/li>\n\n\n\n<li>It streamlines the handling of transactions, including signing, sending, and monitoring transactions on the network.<\/li>\n\n\n\n<li>It provides support for multiple blockchain networks, including Ethereum, Polygon, and others<\/li>\n\n\n\n<li>It provides a very user-friendly, react-based interface for interacting with the blockchain application.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import { TransactionKit } from '@etherspot\/transaction-kit';\n\nfunction App() {\n  return (\n    <TransactionKit&gt;\n      <button onClick={async () =&gt; {\n        const tx = await sendTransaction({\n          to: '0x...',\n          value: ethers.utils.parseEther('0.1')\n        });\n        console.log('Transaction sent:', tx.hash);\n      }}&gt;\n        Send Transaction\n      <\/button&gt;\n    <\/TransactionKit&gt;\n  );\n}\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> { <\/span><span style=\"color: #9CDCFE\">TransactionKit<\/span><span style=\"color: #D4D4D4\"> } <\/span><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;@etherspot\/transaction-kit&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">App<\/span><span style=\"color: #D4D4D4\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #4EC9B0\">TransactionKit<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #808080\">&lt;<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">onClick<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">{async<\/span><span style=\"color: #D4D4D4\"> () <\/span><span style=\"color: #569CD6\">=&gt;<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">tx<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">sendTransaction<\/span><span style=\"color: #D4D4D4\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">to:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;0x...&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">value:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">ethers<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">utils<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">parseEther<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;0.1&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;Transaction sent:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">tx<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">hash<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      }<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        Send Transaction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #569CD6\">button<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #808080\">&lt;\/<\/span><span style=\"color: #4EC9B0\">TransactionKit<\/span><span style=\"color: #808080\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  );<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Moralis_Streams_API\"><\/span><a href=\"https:\/\/docs.moralis.com\/streams-api\/evm\" data-type=\"link\" data-id=\"https:\/\/docs.moralis.com\/streams-api\/evm\" target=\"_blank\" rel=\"noopener\">Moralis Streams API<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The Moralis Streams API is a solution for real-time blockchain data integration. It allows developers to seamlessly stream on-chain events directly into their applications, ensuring their dApps stay synchronized with the data on the blockchain in real-time. <\/p>\n\n\n\n<p><strong>Key Features:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It provides a simple and efficient way to process any event happening on the network.<\/li>\n\n\n\n<li>It extends support to multiple blockchain networks, including Ethereum, Polygon, and others<\/li>\n\n\n\n<li>It offers advanced filtering and data processing capabilities to process data in real time.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Initialize Moralis Streams\nconst stream = await Moralis.Streams.add({\n    chains: [&quot;eth&quot;],\n    description: &quot;Monitor NFT transfers&quot;,\n    tag: &quot;nft&quot;,\n    webhookUrl: &quot;https:\/\/your-webhook.com&quot;,\n    abi: [{\n        &quot;anonymous&quot;: false,\n        &quot;inputs&quot;: [\n            {&quot;indexed&quot;: true, &quot;name&quot;: &quot;from&quot;, &quot;type&quot;: &quot;address&quot;},\n            {&quot;indexed&quot;: true, &quot;name&quot;: &quot;to&quot;, &quot;type&quot;: &quot;address&quot;},\n            {&quot;indexed&quot;: true, &quot;name&quot;: &quot;tokenId&quot;, &quot;type&quot;: &quot;uint256&quot;}\n        ],\n        &quot;name&quot;: &quot;Transfer&quot;,\n        &quot;type&quot;: &quot;event&quot;\n    }]\n});\n\n\/\/ Get stream status\nconst status = await stream.getStatus();\nconsole.log('Stream status:', status);\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\">\/\/ Initialize Moralis Streams<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">stream<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Moralis<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Streams<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">add<\/span><span style=\"color: #D4D4D4\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">chains:<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #CE9178\">&quot;eth&quot;<\/span><span style=\"color: #D4D4D4\">],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">description:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Monitor NFT transfers&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">tag:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;nft&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">webhookUrl:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;https:\/\/your-webhook.com&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">abi:<\/span><span style=\"color: #D4D4D4\"> [{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&quot;anonymous&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">false<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&quot;inputs&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            {<\/span><span style=\"color: #CE9178\">&quot;indexed&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;name&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;from&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;type&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;address&quot;<\/span><span style=\"color: #D4D4D4\">},<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            {<\/span><span style=\"color: #CE9178\">&quot;indexed&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;name&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;to&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;type&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;address&quot;<\/span><span style=\"color: #D4D4D4\">},<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            {<\/span><span style=\"color: #CE9178\">&quot;indexed&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">true<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;name&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;tokenId&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;type&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;uint256&quot;<\/span><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        ],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&quot;name&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Transfer&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&quot;type&quot;<\/span><span style=\"color: #9CDCFE\">:<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;event&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">\/\/ Get stream status<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">status<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">stream<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">getStatus<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">console<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">log<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&#39;Stream status:&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">status<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>With new protocols coming into existence every day, the developers have more and more ecosystems to build on. Web3 libraries are a very important ecosystem tool that offers developers the right set of tools and ease to build an application on a blockchain network. Whether you&#8217;re building a simple to-do list dApp or complex DEX or DeFi protocols, the ecosystem has the right set of tools and libraries available for the developers. While you list out the project requirements it is then you need to choose which web3 libraries will be well-suited for the application you are building. <br>Start building on any ecosystem be it <a href=\"https:\/\/metaschool.so\/courses?blockchain=Ethereum\" data-type=\"link\" data-id=\"https:\/\/metaschool.so\/courses?blockchain=Ethereum\">Ethereum<\/a>, <a href=\"https:\/\/metaschool.so\/tracks\/aptos\" data-type=\"link\" data-id=\"https:\/\/metaschool.so\/tracks\/aptos\">Aptos<\/a>, or <a href=\"https:\/\/metaschool.so\/tracks\/sui\" data-type=\"link\" data-id=\"https:\/\/metaschool.so\/tracks\/sui\">Sui<\/a> and implement the web3 libraries you just learned about <a href=\"https:\/\/metaschool.so\/\" data-type=\"link\" data-id=\"https:\/\/metaschool.so\/\">here<\/a>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":24,"featured_media":10071,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[14],"tags":[],"class_list":["post-10064","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web3"],"_links":{"self":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/10064","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/comments?post=10064"}],"version-history":[{"count":15,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/10064\/revisions"}],"predecessor-version":[{"id":10247,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/10064\/revisions\/10247"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/media\/10071"}],"wp:attachment":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/media?parent=10064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/categories?post=10064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/tags?post=10064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}