mirror of
https://github.com/zoo-apps/papers.git
synced 2026-10-30 14:56:54 +00:00
87 lines
2.8 KiB
TeX
87 lines
2.8 KiB
TeX
\section{Inference Router}
|
|
|
|
|
|
The Inference Router is a Solidity smart contract coordinating query execution.
|
|
|
|
\subsection{Contract Interface}
|
|
|
|
\begin{verbatim}
|
|
contract InferenceRouter {
|
|
struct Request {
|
|
bytes32 queryHash;
|
|
address user;
|
|
uint256 timestamp;
|
|
string ipfsCID; // Experience library version
|
|
}
|
|
|
|
mapping(bytes32 => Request) public requests;
|
|
mapping(address => uint256) public nodeStakes;
|
|
|
|
function submitQuery(
|
|
string memory query,
|
|
string memory ipfsCID
|
|
) public payable returns (bytes32 requestId);
|
|
|
|
function fulfillQuery(
|
|
bytes32 requestId,
|
|
string memory response,
|
|
bytes memory proof
|
|
) public;
|
|
|
|
function slashNode(address node) public;
|
|
}
|
|
\end{verbatim}
|
|
|
|
\subsection{Query Lifecycle}
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Submission}: User calls \texttt{submitQuery(query, ipfsCID)}, pays fee in native token (ZOO).
|
|
\item \textbf{Node Selection}: Router selects GPU node via:
|
|
\begin{itemize}
|
|
\item \textit{Round-robin}: Fair distribution.
|
|
\item \textit{Stake-weighted}: Nodes with higher stakes prioritized.
|
|
\item \textit{Performance-based}: Nodes with lower latency prioritized.
|
|
\end{itemize}
|
|
\item \textbf{Execution}: Selected node:
|
|
\begin{enumerate}
|
|
\item Fetches base model (frozen weights) from IPFS.
|
|
\item Fetches experience library at \texttt{ipfsCID}.
|
|
\item Retrieves top-$k$ relevant experiences.
|
|
\item Constructs prompt: \texttt{experiences + query}.
|
|
\item Runs inference.
|
|
\item Optionally generates proof (zkSNARK or optimistic).
|
|
\end{enumerate}
|
|
\item \textbf{Fulfillment}: Node calls \texttt{fulfillQuery(requestId, response, proof)}. Contract verifies proof (if provided) and releases payment.
|
|
\item \textbf{Dispute}: If proof fails or response is incorrect, user can challenge. Validators re-execute query; if node is malicious, stake is slashed.
|
|
\end{enumerate}
|
|
|
|
\subsection{Proof Systems}
|
|
|
|
\subsubsection{Optimistic Proofs}
|
|
|
|
Default mode: no cryptographic proof. Users can challenge within dispute window (e.g., 1 hour). Validators re-run inference; if outputs differ, slash node.
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Pros}: Zero overhead, fast finality.
|
|
\item \textbf{Cons}: Requires dispute mechanism, delayed finality.
|
|
\end{itemize}
|
|
|
|
\subsubsection{zkSNARK Proofs}
|
|
|
|
Node generates a succinct proof that inference was executed correctly:
|
|
\[
|
|
\pi \leftarrow \text{Prove}(\text{circuit}, \text{model}, \text{input}, \text{output})
|
|
\]
|
|
Contract verifies:
|
|
\[
|
|
\text{Verify}(\pi, \text{output}) = \text{True}
|
|
\]
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Pros}: Instant finality, no disputes.
|
|
\item \textbf{Cons}: Proving overhead ($\sim$10x inference time), circuit complexity.
|
|
\end{itemize}
|
|
|
|
Current implementations: \texttt{zkML} \cite{zkml2023}, \texttt{Modulus Labs EZKL} \cite{ezkl2023}.
|
|
|