1import { s as safe_not_equal, n as noop, d as detach, i as insert_hydration, c as attr, e as claim_element, j as get_svelte_dataset, h as claim_space, k as element, l as space } from './BWf4k48a.js'; 2import { S as SvelteComponent, i as init } from './BzUb4HoI.js'; 3 4/* src/posts/nillion.md generated by Svelte v4.2.20 */ 5 6function create_fragment(ctx) { 7 let p0; 8 let textContent = `Today, Ritual and Nillion are excited to <a href="https://beincrypto.com/nillion-ritual-decentralized-blind-ai-partnership/" rel="noopener noreferrer" target="_blank">announce</a> an ongoing partnership that will enable privacy-preserving model inference and storage on the Ritual Network.`; 9 let t3; 10 let h20; 11 let textContent_1 = "New Era of Privacy for Decentralized AI"; 12 let t5; 13 let p1; 14 let textContent_2 = `Ritual is building the first decentralized execution layer for AI. Ritualâs Chain will feature a custom VM optimized for AI-native operations across models. Our first product, Infernet, is already live and enables developers on any EVM-chain to access models from our node network via smart contracts. You can read more on our product page <a href="https://ritualvisualized.com" rel="noopener noreferrer" target="_blank">here</a>.`; 15 let t9; 16 let p2; 17 let textContent_3 = "Nillionâs âblindâ computation technology makes use of multi-party computation (MPC) gadgets to enable the storing of sensitive and private data along with the ability to compute over this data without revealing it to third-parties."; 18 let t11; 19 let p3; 20 let textContent_4 = "This extends well into the world of AI/ML. Many users may have model inputs that they would like hidden from parties hosting and serving the model. MPC can help split the model input among multiple parties such that no single party is aware of the model input, yet still computes something over their share of data that is useful for generating the end inference."; 21 let t13; 22 let p4; 23 let textContent_5 = "Symmetrically, it may be the case that the creator of a model wants to enable others to run their model without necessarily divulging the model weights. Typically, running a proprietary model means either in-housing the necessary compute or trusting a third-party to not leak model weights. With MPC, model execution can be federated across multiple parties, such that itâs difficult to reconstruct the original model aside from collusion, enabling new possibilities for model creators."; 24 let t15; 25 let p5; 26 let textContent_6 = "Ritual has partnered with Nillion to make this a reality, launching a joint integration that will enable blind (privacy-preserving) model inference and storage on the Ritual network."; 27 let t17; 28 let h21; 29 let textContent_7 = "Private Data, Public Benefit"; 30 let t19; 31 let p6; 32 let textContent_8 = "Enabling both blind inference and model storage over the Ritual network with Nillion offers several key improvements for users and builders:"; 33 let t21; 34 let p7; 35 let textContent_9 = `<strong>Enhanced user data protection:</strong> Applications that previously wanted to build models that can interface with private data (i.e. ingesting proprietary market data as an input, or utilizing personal consumer information for social or financial use cases) are now enabled, without needing to jump through hoops. While there are other solutions like FHE that can enable similar properties, they arenât computationally feasible for large-scale productionized AI/ML use cases. MPC scales today with what users actually want out of their models.`; 36 let t24; 37 let p8; 38 let textContent_10 = `<strong>Secure model sharing:</strong> Thanks to MPC, proprietary models can be run by external third parties without leakage of model weights and other private model information. This unlocks a new paradigm; previously, creators of custom models would need to run the models themselves or through a trusted third party in order to make them accessible to users and monetize. By eliminating trust assumptions via MPC, model creators on Ritual can have Ritual nodes run their models while still preserving their valuable IP.`; 39 let t27; 40 let p9; 41 let textContent_11 = `<strong>Accelerated enterprise adoption:</strong> A huge hurdle that larger, institutional consumers of AI models typically contend with are privacy concerns around internal and user data. With Ritual and Nillion, enterprises can access external AI/ML models while respecting their own security needs.`; 42 let t30; 43 let h22; 44 let textContent_12 = "Integrating Blind Computation into Ritual"; 45 let t32; 46 let p10; 47 let textContent_13 = "Nillionâs blind computation network will be integrated to provide dedicated resources for (1) generating inferences over private data and (2) storing private models on the Ritual."; 48 let t34; 49 let p11; 50 let textContent_14 = `<img src="/images/blog/nillion/diagram.webp" alt="Ritual w/ Nillion diagram"/>`; 51 let t35; 52 let p12; 53 let textContent_15 = "Specifically, this entails:"; 54 let t37; 55 let ol; 56 let textContent_16 = `<li><strong>Dedicated cluster creation:</strong> Nillion will establish a specialized cluster dedicated to handling model storage and inference for the Ritual network.</li> <li><strong>On-chain contract monitoring:</strong>
56 Nodes within that cluster will continuously monitor smart contracts on Ritual for incoming blind inference requests.</li> <li><strong>Client integration:</strong> Nillionâs client will be integrated as a sidecar on the RitualVM, so developers and users on Ritual Chain will have native access to private inference.</li> <li><strong>Output reconstruction:</strong> The results of blind inference conducted by the Nillion network will be easily reconstructed by Ritualâs end users, ensuring no data leakage end-to-end.</li>`; 57 let t49; 58 let h23; 59 let textContent_17 = "Privacy-first Ritual Applications"; 60 let t51; 61 let p13; 62 let textContent_18 = "Working with Nillion opens up a novel design space for secure, privacy-first applications across blockchain and AI. Some of the use cases include:"; 63 let t53; 64 let ul; 65 let textContent_19 = `<li><strong>Private On-chain Mechanisms:</strong> With Ritual and Nillion, core on-chain primitives can be reimagined under the lens of privacy. From orderbooks where user bids are kept private in a dark-pool setting, to enabling AI agents to interact with prediction markets without leaking their strategy, the obfuscation enabled by MPC can help reimagine the game-theoretic dynamics that play out with on-chain applications today.</li> <li><strong>Private Retrieval Augmented Generation (RAG):</strong> RAG based systems are critical in providing LLMs with contextual information from vector databases, enabling agentic infrastructure and lowering model hallucination. MPC enables private RAG on Ritual, allowing vector databases to be queried without information leakage.</li> <li><strong>Trustless Identity:</strong> Anonymization and pseudonymization layers can be largely enhanced by the usage of private consumer data and machine-learning based identifiers. With Nillion, users on Ritual can use network models to construct new identity primitives without having to actually divulge private information used as inputs.</li>`; 66 let t62; 67 let p14; 68 let textContent_20 = `These potential applications are just the tip of the spear. Weâre calling on developers, researchers, and visionaries across all sectors to help us explore this new frontier. If you have a novel idea for building with Ritual and Nillion at the intersection of privacy, crypto and AI, make sure to reach out to us or submit your idea to the <a href="https://altar.ritual.net/" rel="noopener noreferrer" target="_blank">Ritual Altar</a> program.`; 69 let t66; 70 let h24; 71 let textContent_21 = "Looking Forward"; 72 let t68; 73 let p15; 74 let textContent_22 = "Our partnership with Nillion is delivering the solution to a long standing need: privacy-preserving machine learning. Unlike many other cryptographic or probabilistic primitives, MPC scales today and provides developers and users with the ability to keep both inputs/outputs AND models private, which unlocks new functionality for both builders and users."; 75 let t70; 76 let p16; 77 let textContent_23 = "Weâre excited to work with the community to explore the full potential of this integration. Weâll be releasing more POCs over the coming weeks to demonstrate how to implement Nilion blind computing in projects built on Ritual soon, so keep an eye out."; 78 let t72; 79 let p17; 80 let textContent_24 = `For all future updates, follow <a href="http://x.com/ritualnet" rel="noopener noreferrer" target="_blank">Ritual</a> and <a href="https://x.com/nillionnetwork" rel="noopener noreferrer" target="_blank">Nillion</a> on X. Got ideas for Ritual and Nillionâs tech? Submit them to <a href="http://altar.ritual.net" rel="noopener noreferrer" target="_blank">Ritual Altar</a>, or join our <a href="https://discord.com/invite/ritual-net" rel="noopener noreferrer" target="_blank">Discord</a> community and weâll be in touch.`; 81 let t82; 82 let hr; 83 let t83; 84 let p18; 85 let textContent_25 = `<strong>Disclaimer</strong>: This post is for general information purposes only. It does not constitute investment advice or a recommendation, offer or solicitation to buy or sell any investment and should not be used in the evaluation of the merits of making any investment decision. It should not be relied upon for accounting, legal or tax advice or investment recommendations. The information in this post should not be construed as a promise or guarantee in connection with the release or development of any future products, services or digital assets. This post reflects the current opinions of the authors and is not made on behalf of Ritual or its affiliates and does not necessarily reflect the opinions of Ritual, its affiliates or individuals associated with Ritual. All information in this post is provided without any representation or warranty of any kind. The opinions reflected herein are subject to change without being updated.`; 86 87 return { 88 c() { 89 p0 = element("p"); 90 p0.innerHTML = textContent; 91 t3 = space(); 92 h20 = element("h2"); 93 h20.textContent = textContent_1; 94 t5 = space(); 95 p1 = element("p"); 96 p1.innerHTML = textContent_2; 97 t9 = space(); 98 p2 = element("p"); 99 p2.textContent = textContent_3; 100 t11 = space(); 101 p3 = element("p"); 102 p3.textContent = textContent_4; 103 t13 = space(); 104 p4 = element("p"); 105 p4.textContent = textContent_5; 106 t15 = space(); 107 p5 = element("p"); 108 p5.textContent = textContent_6; 109 t17 = space(); 110 h21 = element("h2"); 111 h21.textContent = textContent_7; 112 t19 = space(); 113 p6 = element("p"); 114 p6.textContent = textContent_8; 115 t21 = space(); 116 p7 = element("p"); 117 p7.innerHTML = textContent_9; 118 t24 = space(); 119 p8 = element("p"); 120 p8.innerHTML = textContent_10; 121 t27 = space(); 122 p9 = element("p"); 123 p9.innerHTML = textContent_11; 124 t30 = space(); 125 h22 = element("h2"); 126 h22.textContent = textContent_12; 127 t32 = space(); 128 p10 = element("p"); 129 p10.textContent = textContent_13; 130 t34 = space(); 131 p11 = element("p"); 132 p11.innerHTML = textContent_14; 133 t35 = space(); 134 p12 = element("p"); 135 p12.textContent = textContent_15; 136 t37 = space(); 137 ol = element("ol"); 138 ol.innerHTML = textContent_16; 139 t49 = space(); 140 h23 = element("h2"); 141 h23.textContent = textContent_17; 142 t51 = space(); 143 p13 = element("p"); 144 p13.textContent = textContent_18; 145 t53 = space(); 146 ul = element("ul"); 147 ul.innerHTML = textContent_19; 148 t62 = space(); 149 p14 = element("p"); 150 p14.innerHTML = textContent_20; 151 t66 = space(); 152 h24 = element("h2"); 153 h24.textContent = textContent_21; 154 t68 = space(); 155 p15 = element("p"); 156 p15.textContent = textContent_22; 157 t70 = space(); 158 p16 = element("p"); 159 p16.textContent = textContent_23; 160 t72 = space(); 161 p17 = element("p"); 162 p17.innerHTML = textContent_24; 163 t82 = space(); 164 hr = element("hr"); 165 t83 = space(); 166 p18 = element("p"); 167 p18.innerHTML = textContent_25; 168 this.h(); 169 }, 170 l(nodes) {
171 p0 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 172 if (get_svelte_dataset(p0) !== "svelte-1e9mrbw") p0.innerHTML = textContent; 173 t3 = claim_space(nodes); 174 h20 = claim_element(nodes, "H2", { id: true, ["data-svelte-h"]: true }); 175 if (get_svelte_dataset(h20) !== "svelte-1bt6ia") h20.textContent = textContent_1; 176 t5 = claim_space(nodes); 177 p1 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 178 if (get_svelte_dataset(p1) !== "svelte-m91beo") p1.innerHTML = textContent_2; 179 t9 = claim_space(nodes); 180 p2 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 181 if (get_svelte_dataset(p2) !== "svelte-xd2qvp") p2.textContent = textContent_3; 182 t11 = claim_space(nodes); 183 p3 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 184 if (get_svelte_dataset(p3) !== "svelte-1lkt91h") p3.textContent = textContent_4; 185 t13 = claim_space(nodes); 186 p4 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 187 if (get_svelte_dataset(p4) !== "svelte-hdqaem") p4.textContent = textContent_5; 188 t15 = claim_space(nodes); 189 p5 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 190 if (get_svelte_dataset(p5) !== "svelte-1iabdy2") p5.textContent = textContent_6; 191 t17 = claim_space(nodes); 192 h21 = claim_element(nodes, "H2", { id: true, ["data-svelte-h"]: true }); 193 if (get_svelte_dataset(h21) !== "svelte-1txfzix") h21.textContent = textContent_7; 194 t19 = claim_space(nodes); 195 p6 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 196 if (get_svelte_dataset(p6) !== "svelte-1gs2d4g") p6.textContent = textContent_8; 197 t21 = claim_space(nodes); 198 p7 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 199 if (get_svelte_dataset(p7) !== "svelte-l4p621") p7.innerHTML = textContent_9; 200 t24 = claim_space(nodes); 201 p8 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 202 if (get_svelte_dataset(p8) !== "svelte-vquumc") p8.innerHTML = textContent_10; 203 t27 = claim_space(nodes); 204 p9 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 205 if (get_svelte_dataset(p9) !== "svelte-1vamyl7") p9.innerHTML = textContent_11; 206 t30 = claim_space(nodes); 207 h22 = claim_element(nodes, "H2", { id: true, ["data-svelte-h"]: true }); 208 if (get_svelte_dataset(h22) !== "svelte-hj8dsg") h22.textContent = textContent_12; 209 t32 = claim_space(nodes); 210 p10 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 211 if (get_svelte_dataset(p10) !== "svelte-4lhoy1") p10.textContent = textContent_13; 212 t34 = claim_space(nodes); 213 p11 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 214 if (get_svelte_dataset(p11) !== "svelte-9175nz") p11.innerHTML = textContent_14; 215 t35 = claim_space(nodes); 216 p12 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 217 if (get_svelte_dataset(p12) !== "svelte-532g0q") p12.textContent = textContent_15; 218 t37 = claim_space(nodes); 219 ol = claim_element(nodes, "OL", { ["data-svelte-h"]: true }); 220 if (get_svelte_dataset(ol) !== "svelte-x3qzs1") ol.innerHTML = textContent_16; 221 t49 = claim_space(nodes); 222 h23 = claim_element(nodes, "H2", { id: true, ["data-svelte-h"]: true }); 223 if (get_svelte_dataset(h23) !== "svelte-h73ryq") h23.textContent = textContent_17; 224 t51 = claim_space(nodes); 225 p13 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 226 if (get_svelte_dataset(p13) !== "svelte-xfdqw3") p13.textContent = textContent_18; 227 t53 = claim_space(nodes); 228 ul = claim_element(nodes, "UL", { ["data-svelte-h"]: true }); 229 if (get_svelte_dataset(ul) !== "svelte-1qmommb") ul.innerHTML = textContent_19; 230 t62 = claim_space(nodes); 231 p14 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 232 if (get_svelte_dataset(p14) !== "svelte-18d0jde") p14.innerHTML = textContent_20; 233 t66 = claim_space(nodes); 234 h24 = claim_element(nodes, "H2", { id: true, ["data-svelte-h"]: true }); 235 if (get_svelte_dataset(h24) !== "svelte-bmwmx") h24.textContent = textContent_21; 236 t68 = claim_space(nodes); 237 p15 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 238 if (get_svelte_dataset(p15) !== "svelte-4xzkm2") p15.textContent = textContent_22; 239 t70 = claim_space(nodes);
240 p16 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 241 if (get_svelte_dataset(p16) !== "svelte-1dkqarq") p16.textContent = textContent_23; 242 t72 = claim_space(nodes); 243 p17 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 244 if (get_svelte_dataset(p17) !== "svelte-12sn6qi") p17.innerHTML = textContent_24; 245 t82 = claim_space(nodes); 246 hr = claim_element(nodes, "HR", {}); 247 t83 = claim_space(nodes); 248 p18 = claim_element(nodes, "P", { ["data-svelte-h"]: true }); 249 if (get_svelte_dataset(p18) !== "svelte-gzvodj") p18.innerHTML = textContent_25; 250 this.h(); 251 }, 252 h() { 253 attr(h20, "id", "new-era-of-privacy-for-decentralized-ai"); 254 attr(h21, "id", "private-data-public-benefit"); 255 attr(h22, "id", "integrating-blind-computation-into-ritual"); 256 attr(h23, "id", "privacy-first-ritual-applications"); 257 attr(h24, "id", "looking-forward"); 258 }, 259 m(target, anchor) { 260 insert_hydration(target, p0, anchor); 261 insert_hydration(target, t3, anchor); 262 insert_hydration(target, h20, anchor); 263 insert_hydration(target, t5, anchor); 264 insert_hydration(target, p1, anchor); 265 insert_hydration(target, t9, anchor); 266 insert_hydration(target, p2, anchor); 267 insert_hydration(target, t11, anchor); 268 insert_hydration(target, p3, anchor); 269 insert_hydration(target, t13, anchor); 270 insert_hydration(target, p4, anchor); 271 insert_hydration(target, t15, anchor); 272 insert_hydration(target, p5, anchor); 273 insert_hydration(target, t17, anchor); 274 insert_hydration(target, h21, anchor); 275 insert_hydration(target, t19, anchor); 276 insert_hydration(target, p6, anchor); 277 insert_hydration(target, t21, anchor); 278 insert_hydration(target, p7, anchor); 279 insert_hydration(target, t24, anchor); 280 insert_hydration(target, p8, anchor); 281 insert_hydration(target, t27, anchor); 282 insert_hydration(target, p9, anchor); 283 insert_hydration(target, t30, anchor); 284 insert_hydration(target, h22, anchor); 285 insert_hydration(target, t32, anchor); 286 insert_hydration(target, p10, anchor); 287 insert_hydration(target, t34, anchor); 288 insert_hydration(target, p11, anchor); 289 insert_hydration(target, t35, anchor); 290 insert_hydration(target, p12, anchor); 291 insert_hydration(target, t37, anchor); 292 insert_hydration(target, ol, anchor); 293 insert_hydration(target, t49, anchor); 294 insert_hydration(target, h23, anchor); 295 insert_hydration(target, t51, anchor); 296 insert_hydration(target, p13, anchor); 297 insert_hydration(target, t53, anchor); 298 insert_hydration(target, ul, anchor); 299 insert_hydration(target, t62, anchor);
300 insert_hydration(target, p14, anchor); 301 insert_hydration(target, t66, anchor); 302 insert_hydration(target, h24, anchor); 303 insert_hydration(target, t68, anchor); 304 insert_hydration(target, p15, anchor); 305 insert_hydration(target, t70, anchor); 306 insert_hydration(target, p16, anchor); 307 insert_hydration(target, t72, anchor); 308 insert_hydration(target, p17, anchor); 309 insert_hydration(target, t82, anchor); 310 insert_hydration(target, hr, anchor); 311 insert_hydration(target, t83, anchor); 312 insert_hydration(target, p18, anchor); 313 }, 314 p: noop, 315 i: noop, 316 o: noop, 317 d(detaching) { 318 if (detaching) { 319 detach(p0); 320 detach(t3); 321 detach(h20); 322 detach(t5); 323 detach(p1); 324 detach(t9); 325 detach(p2); 326 detach(t11); 327 detach(p3); 328 detach(t13); 329 detach(p4); 330 detach(t15); 331 detach(p5); 332 detach(t17); 333 detach(h21); 334 detach(t19); 335 detach(p6); 336 detach(t21); 337 detach(p7); 338 detach(t24); 339 detach(p8); 340 detach(t27); 341 detach(p9); 342 detach(t30); 343 detach(h22); 344 detach(t32); 345 detach(p10); 346 detach(t34); 347 detach(p11); 348 detach(t35); 349 detach(p12); 350 detach(t37); 351 detach(ol); 352 detach(t49); 353 detach(h23); 354 detach(t51); 355 detach(p13); 356 detach(t53); 357 detach(ul); 358 detach(t62); 359 detach(p14); 360 detach(t66); 361 detach(h24); 362 detach(t68); 363 detach(p15); 364 detach(t70); 365 detach(p16); 366 detach(t72); 367 detach(p17); 368 detach(t82); 369 detach(hr); 370 detach(t83); 371 detach(p18); 372 } 373 } 374 }; 375} 376 377const metadata = { 378 "title": "Ritual à Nillion: Decentralized, Blind Inference for AI", 379 "author": "Ritual Team", 380 "description": "Today, Ritual and Nillion are excited to announce an ongoing partnership that will enable privacy-preserving model inference and storage on the Ritual Network.", 381 "image": "/images/blog/nillion/meta.webp", 382 "date": "2024-08-07T05:00:00.000Z", 383 "tags": ["partnerships", "infra"] 384}; 385 386const { title, author, description, image, date, tags } = metadata; 387 388class Nillion extends SvelteComponent { 389 constructor(options) { 390 super(); 391 init(this, options, null, create_fragment, safe_not_equal, {}); 392 } 393} 394 395const __vite_glob_0_17 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ 396 __proto__: null, 397 default: Nillion, 398 metadata 399}, Symbol.toStringTag, { value: 'Module' })); 400 401export { __vite_glob_0_17 as _ };
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.