PageSourceSearch

https://ritual.net/_app/immutable/chunks/pkghjPsS.js

js ritual.net collected 2026-10-03 23:46:09 UTC 21,151 bytes, 401 lines download raw bytes

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.