<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yash Jain</title>
    <description>The latest articles on DEV Community by Yash Jain (@yashjain197).</description>
    <link>https://dev.to/yashjain197</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1046381%2Ff27084ec-0308-4fe3-96f7-fd4791a3f5c0.jpg</url>
      <title>DEV Community: Yash Jain</title>
      <link>https://dev.to/yashjain197</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yashjain197"/>
    <language>en</language>
    <item>
      <title>Stack3 Security: Building a TigerGraph-Powered Threat Intelligence Graph for Repositories, Packages, and Wallet Requests</title>
      <dc:creator>Yash Jain</dc:creator>
      <pubDate>Sat, 31 Oct 2026 06:01:25 +0000</pubDate>
      <link>https://dev.to/yashjain197/stack3-security-building-a-tigergraph-powered-threat-intelligence-graph-for-repositories-1301</link>
      <guid>https://dev.to/yashjain197/stack3-security-building-a-tigergraph-powered-threat-intelligence-graph-for-repositories-1301</guid>
      <description>&lt;p&gt;&lt;strong&gt;Built at Hacker House Goa | TigerGraph Open Innovation Track&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Web3 security threats rarely exist in isolation.&lt;/p&gt;

&lt;p&gt;A malicious npm package might communicate with a suspicious domain. A compromised repository might contain an automated command that executes when a developer trusts a workspace. A phishing website might request unlimited token approval from a user's wallet.&lt;/p&gt;

&lt;p&gt;Individually, these signals might look unrelated. Connected together, they can reveal a much bigger threat.&lt;/p&gt;

&lt;p&gt;That's the problem we set out to solve with &lt;strong&gt;Stack3 Security&lt;/strong&gt; — a Web3 security platform built for developers and wallet users, powered by TigerGraph.&lt;/p&gt;

&lt;p&gt;This project was built at Hacker House Goa as part of the TigerGraph &lt;strong&gt;Open Innovation&lt;/strong&gt; track.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Problem: Security Signals Are Disconnected
&lt;/h2&gt;

&lt;p&gt;Consider two scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario A: A malicious repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A developer receives a GitHub repository as part of a take-home assignment. Hidden inside &lt;code&gt;.vscode/tasks.json&lt;/code&gt; is a command that can execute when the developer trusts the workspace.&lt;/p&gt;

&lt;p&gt;Opening an unfamiliar repository can therefore introduce risks before the developer even starts reviewing the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario B: A malicious Web3 website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A user visits a dApp advertising a reward claim. The website looks legitimate, but the wallet request asks for an unlimited token approval.&lt;/p&gt;

&lt;p&gt;The user might approve a transaction without understanding what permissions they are granting.&lt;/p&gt;

&lt;p&gt;These events are generally investigated using different tools.&lt;/p&gt;

&lt;p&gt;Repository scanners, package security services, phishing detection systems, and wallet security tools operate independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The missing piece is shared threat intelligence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We wanted to connect these signals so that discovering a threat in one environment could provide useful context to another.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What We Built: Stack3 Security
&lt;/h2&gt;

&lt;p&gt;Stack3 brings together three security surfaces backed by a shared threat intelligence graph.&lt;/p&gt;

&lt;h3&gt;
  
  
  VS Code Extension — Repository Security
&lt;/h3&gt;

&lt;p&gt;The VS Code extension allows developers to clone and scan public GitHub repositories before opening them.&lt;/p&gt;

&lt;p&gt;Our workflow is designed around one principle: never execute untrusted code during scanning.&lt;/p&gt;

&lt;p&gt;The process includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accepting a public GitHub repository URL.&lt;/li&gt;
&lt;li&gt;Cloning the repository into a quarantine environment.&lt;/li&gt;
&lt;li&gt;Reading project files as data without executing them.&lt;/li&gt;
&lt;li&gt;Detecting suspicious configurations, including auto-run behavior, installation scripts, and exposed secrets.&lt;/li&gt;
&lt;li&gt;Identifying npm dependencies and checking packages through Socket.&lt;/li&gt;
&lt;li&gt;Generating a security verdict before the developer opens the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also provide an &lt;strong&gt;Open with Auto-Run Disabled&lt;/strong&gt; option that moves &lt;code&gt;.vscode&lt;/code&gt; and &lt;code&gt;.devcontainer&lt;/code&gt; configurations aside before opening the workspace.&lt;/p&gt;

&lt;p&gt;This helps reduce the risk of automatically triggered development environment commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chrome Extension — Web3 Website and Wallet Security
&lt;/h3&gt;

&lt;p&gt;The Chrome extension focuses on identifying potentially malicious websites and suspicious wallet interactions.&lt;/p&gt;

&lt;p&gt;It analyzes page-level and phishing signals and monitors wallet requests.&lt;/p&gt;

&lt;p&gt;One important implementation is wrapping &lt;code&gt;ethereum.request&lt;/code&gt; so that wallet interactions can be reviewed before being forwarded to MetaMask.&lt;/p&gt;

&lt;p&gt;This allows Stack3 to inspect potentially dangerous requests before the wallet processes them.&lt;/p&gt;

&lt;p&gt;We also designed the extension to fail gracefully: if the security extension is unavailable, the underlying wallet functionality should continue working.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stack3 Dashboard
&lt;/h3&gt;

&lt;p&gt;The dashboard provides a centralized interface for security information.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Email OTP authentication.&lt;/li&gt;
&lt;li&gt;Website scanning.&lt;/li&gt;
&lt;li&gt;Repository scanning.&lt;/li&gt;
&lt;li&gt;One-hop threat graph visualization.&lt;/li&gt;
&lt;li&gt;Connected threat intelligence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dashboard allows users to explore relationships between repositories, domains, software packages, endpoints, and wallets.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Why TigerGraph?
&lt;/h2&gt;

&lt;p&gt;The most important architectural decision was using TigerGraph as a shared threat intelligence layer.&lt;/p&gt;

&lt;p&gt;Traditional security scanners generally produce individual reports.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A repository scanner identifies a suspicious package.&lt;/li&gt;
&lt;li&gt;A website scanner identifies a suspicious domain.&lt;/li&gt;
&lt;li&gt;A wallet scanner identifies a potentially dangerous wallet interaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But what happens when all three findings are connected?&lt;/p&gt;

&lt;p&gt;Imagine the following relationships:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Repository → Package → Domain → Wallet&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A package used by a repository communicates with a suspicious domain, and that domain is associated with a wallet already identified in another security report.&lt;/p&gt;

&lt;p&gt;Looking at each report independently makes this relationship difficult to discover.&lt;/p&gt;

&lt;p&gt;A graph database makes these connections explicit.&lt;/p&gt;

&lt;p&gt;TigerGraph allows Stack3 to represent security entities as vertices and their relationships as edges.&lt;/p&gt;

&lt;p&gt;This means a finding discovered during one scan can provide useful context during another scan.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. TigerGraph Architecture and Implementation
&lt;/h2&gt;

&lt;p&gt;We implemented a graph-local schema using &lt;strong&gt;TigerGraph Savanna 4.x&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Graph Vertices
&lt;/h3&gt;

&lt;p&gt;Our schema includes five primary vertex types:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vertex&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Wallet&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Represents blockchain wallet addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Domain&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Represents websites and hostnames&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SoftwarePackage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Represents software packages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Repo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Represents GitHub repositories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Endpoint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Represents network endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We used &lt;code&gt;SoftwarePackage&lt;/code&gt; instead of &lt;code&gt;Package&lt;/code&gt; because &lt;code&gt;Package&lt;/code&gt; is reserved in our environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Graph Edges
&lt;/h3&gt;

&lt;p&gt;We implemented relationships between these entities, including reverse edges.&lt;/p&gt;

&lt;p&gt;The primary relationships are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PACKAGE_DRAINS_TO&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DOMAIN_DRAINS_TO&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PACKAGE_SENDS_TO&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DOMAIN_SENDS_TO&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LOADS_SCRIPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DEPENDS_ON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FUNDED&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reverse edges allow us to explore relationships in both directions and retrieve a more useful one-hop neighbourhood.&lt;/p&gt;

&lt;h3&gt;
  
  
  Entity ID Normalization
&lt;/h3&gt;

&lt;p&gt;Consistent identifiers are essential when multiple security surfaces write to the same graph.&lt;/p&gt;

&lt;p&gt;We normalize identifiers in the API layer.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wallet: &lt;code&gt;1:0x…&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Domain: &lt;code&gt;hostname&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;npm package: &lt;code&gt;pkg:npm/name@version&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Repository: &lt;code&gt;github:owner/name&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Endpoint: &lt;code&gt;https://…&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures that the same entity can be referenced consistently across different scanning services.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Integrating with TigerGraph REST++
&lt;/h2&gt;

&lt;p&gt;We used TigerGraph REST++ APIs rather than installed GSQL query files.&lt;/p&gt;

&lt;p&gt;The integration uses the following endpoints:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST /gsql/v1/tokens&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We encountered an issue with the older &lt;code&gt;/restpp/requesttoken&lt;/code&gt; endpoint, which returned HTTP 400 in our environment. We switched to the token endpoint above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Graph Upsert&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST /restpp/graph/stack3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This endpoint handles writing and updating graph entities and relationships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertex Retrieval&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /restpp/graph/stack3/vertices/{type}/{id}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edge Retrieval&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /restpp/graph/stack3/edges/{type}/{id}?limit=200&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The vertex and edge retrieval endpoints power our one-hop neighbourhood visualization.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Data Flow: PostgreSQL + TigerGraph
&lt;/h2&gt;

&lt;p&gt;We deliberately designed the architecture so that TigerGraph is not the only source of truth.&lt;/p&gt;

&lt;p&gt;Our data flow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A security scan generates a report.&lt;/li&gt;
&lt;li&gt;The report is persisted in PostgreSQL first.&lt;/li&gt;
&lt;li&gt;A background worker attempts to synchronize the relevant threat entities and relationships with TigerGraph.&lt;/li&gt;
&lt;li&gt;The dashboard requests graph information.&lt;/li&gt;
&lt;li&gt;If graph synchronization is pending or TigerGraph is unavailable, the application can fall back to PostgreSQL.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach gives us reliable report persistence while allowing graph synchronization to happen asynchronously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL handles the primary report storage, while TigerGraph provides relationship-based threat intelligence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The architecture can be represented as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VS Code Extension ──┐
                    │
Chrome Extension ───┼──► FastAPI
                    │       │
Website Scanner ────┘       │
                            ▼
                        PostgreSQL
                      (Source of Truth)
                            │
                            ▼
                     Background Worker
                            │
                            ▼
                        TigerGraph
                     (Threat Intelligence)
                            │
                            ▼
                       Dashboard
                     (Graph Explorer)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our APIs run on Cloudflare Workers and containers.&lt;/p&gt;

&lt;p&gt;Authentication uses email OTP and JWT. Billing is integrated with Dodo in test mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. What Would Not Be Possible Without a Graph?
&lt;/h2&gt;

&lt;p&gt;This is where TigerGraph becomes particularly important.&lt;/p&gt;

&lt;p&gt;Imagine a repository scan discovers that a particular software package communicates with wallet X.&lt;/p&gt;

&lt;p&gt;Separately, a website scan discovers that a particular domain is also associated with wallet X.&lt;/p&gt;

&lt;p&gt;Both findings are stored independently.&lt;/p&gt;

&lt;p&gt;Without a graph, connecting these findings requires additional lookup logic across different reports and databases.&lt;/p&gt;

&lt;p&gt;With TigerGraph, we can query wallet X and retrieve its one-hop neighbourhood, including incoming and outgoing relationships.&lt;/p&gt;

&lt;p&gt;This gives Stack3 a shared context across different security surfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A repository scan can contribute intelligence that becomes useful to a website scan, and vice versa.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the core value of the graph architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Results and Current Implementation
&lt;/h2&gt;

&lt;p&gt;We have implemented and deployed several working components.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live Cloudflare Workers for the Chrome API.&lt;/li&gt;
&lt;li&gt;VS Code repository scanning API.&lt;/li&gt;
&lt;li&gt;Live website.&lt;/li&gt;
&lt;li&gt;GitHub clone-and-scan workflow for public repositories.&lt;/li&gt;
&lt;li&gt;npm dependency extraction, including handling &lt;code&gt;^&lt;/code&gt; version ranges when no lockfile is available.&lt;/li&gt;
&lt;li&gt;Socket integration for package security checks.&lt;/li&gt;
&lt;li&gt;Prioritization of flagged packages in scan results.&lt;/li&gt;
&lt;li&gt;TigerGraph upserts and one-hop neighbourhood retrieval.&lt;/li&gt;
&lt;li&gt;PostgreSQL fallback when graph synchronization is pending.&lt;/li&gt;
&lt;li&gt;Dashboard-based graph visualization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also made an important distinction in our security reporting.&lt;/p&gt;

&lt;p&gt;Stack3 never labels a result simply as &lt;strong&gt;Safe&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead, we use the following levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Critical&lt;/li&gt;
&lt;li&gt;High&lt;/li&gt;
&lt;li&gt;Caution&lt;/li&gt;
&lt;li&gt;Unknown&lt;/li&gt;
&lt;li&gt;No Known Issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Failed checks are marked as &lt;strong&gt;Not Checked&lt;/strong&gt;, rather than being treated as successful checks.&lt;/p&gt;

&lt;p&gt;A clean Socket response is represented as "Checked, No Alerts" rather than &lt;code&gt;notChecked&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We believe security products should communicate uncertainty honestly instead of giving users a false sense of security.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Current Limitations
&lt;/h2&gt;

&lt;p&gt;There are still limitations in the current implementation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repository clone-and-scan currently supports public GitHub repositories.&lt;/li&gt;
&lt;li&gt;Wallet security currently focuses on EVM wallets.&lt;/li&gt;
&lt;li&gt;The first container request can take longer because of initialization.&lt;/li&gt;
&lt;li&gt;Graph intelligence currently focuses on writes and one-hop lookups.&lt;/li&gt;
&lt;li&gt;We do not currently implement vector search, PageRank, or MCP integration.&lt;/li&gt;
&lt;li&gt;A successful scan does not guarantee that a repository or website is completely safe.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are important boundaries of the current implementation, not capabilities we want to overstate.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. What's Next?
&lt;/h2&gt;

&lt;p&gt;Our next focus is expanding the threat intelligence layer.&lt;/p&gt;

&lt;p&gt;Some areas we want to explore include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deeper relationship traversal across threat entities.&lt;/li&gt;
&lt;li&gt;Improved wallet and transaction risk analysis.&lt;/li&gt;
&lt;li&gt;More sophisticated dependency and package risk correlation.&lt;/li&gt;
&lt;li&gt;Better phishing and malicious domain intelligence.&lt;/li&gt;
&lt;li&gt;Expanding repository scanning capabilities.&lt;/li&gt;
&lt;li&gt;More comprehensive threat visualization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The long-term goal is to make Stack3 a shared security intelligence layer for Web3 developers and wallet users.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Explore the Code
&lt;/h2&gt;

&lt;p&gt;Stack3 Security is being developed as an integrated security platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/yashjain197/stack3security" rel="noopener noreferrer"&gt;https://github.com/yashjain197/stack3security&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TigerGraph Schema:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;chrome-extension-backend/backend/graph/schema.gsql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We would love to hear feedback from the TigerGraph and Web3 security communities, especially around graph modelling, threat relationship discovery, and practical ways to improve cross-surface security intelligence.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Built at Hacker House Goa for the TigerGraph Open Innovation Track.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack3 Security — Connecting threats before they become incidents.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>security</category>
      <category>web3</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Is automatic transactions are possible on solana?</title>
      <dc:creator>Yash Jain</dc:creator>
      <pubDate>Thu, 16 Mar 2023 10:17:57 +0000</pubDate>
      <link>https://dev.to/yashjain197/is-automatic-transactions-are-possible-on-solana-43hb</link>
      <guid>https://dev.to/yashjain197/is-automatic-transactions-are-possible-on-solana-43hb</guid>
      <description>&lt;p&gt;Is this possible that user can set a certain amount of money can be deducted from their account in a certain time automatically just by signing the transaction only once?&lt;br&gt;
can anyone please help me with this!&lt;/p&gt;

</description>
      <category>solana</category>
    </item>
  </channel>
</rss>
