MPC-in-the-Head 轉換入門指南

1. 引言

本文將探討構建零知識證明(ZKP)的一種非常有趣的方法:

  • MPC-in-the-Head Transformation(轉換)。
    • 該方法最早由 2007 年的論文 Zero-knowledge from secure multiparty computation 提出,通常被稱為 IKOS 轉換,該名稱來源于論文作者的首字母縮寫。
    • 該轉換允許從任意的 MPC 協議(將其視為黑盒)構建零知識證明系統。

本文將介紹 MPC 協議背后的直覺、最初的轉換技術,并探討該構造如何應用于開發后量子簽名方案。

2. 何為MPC?

安全多方計算(MPC) 是一種密碼學技術:

  • 允許多個參與方共同計算一個函數的結果,同時各自保留輸入的私密性。
  • 每個參與方都持有自己的私有輸入,目標是對所有私有輸入執行某個預定的函數。
  • 協議結束時,每個參與方只應學習到該函數的輸出,而不能得知其他參與方的輸入信息。
    在這里插入圖片描述

3. 一個簡單的MPC協議

MPC 協議中常用的示例是如下場景:

  • 假設一家公司的一群員工想要知道全體員工的平均工資,但又不想暴露自己的工資。
    • 在這個設定中,每個員工持有一個私有輸入 SiS_iSi?,表示自己的工資。

假設所有計算都在某個素域 Fp\mathbb{F}_pFp? 上進行,希望構建一個協議,用于計算所有員工私有輸入(工資)的總和 ∑Si∈Fp\sum S_i \in \mathbb{F}_pSi?Fp?。隨后,平均工資可以在明文中通過總和除以員工數量來計算。

該協議分為三個步驟:

  • 1)輸入共享(input sharing)
  • 2)本地累加(local accumulation)
  • 3)重構(reconstruction)。

3.1 輸入共享

設想1號員工持有自己的工資 S1S_1S1?。其首先會對 S1S_1S1? 進行加法秘密共享(additive secret sharing),也就是說將該值“分割”為 nnn 個份額:
[S1]1,[S1]2,…,[S1]n[ S_1 ]_1, [ S_1 ]_2, \ldots, [ S_1 ]_n [S1?]1?,[S1?]2?,,[S1?]n?

這些份額都是域中的元素,滿足它們的總和等于原始值 S1S_1S1?
S1=[S1]1+[S1]2+…+[S1]nS_1 = [ S_1 ]_1 + [ S_1 ]_2 + \ldots + [ S_1 ]_nS1?=[S1?]1?+[S1?]2?++[S1?]n?

在實踐中,計算方式如下:首先從 Fp\mathbb{F}_pFp? 中均勻隨機采樣前 n?1n-1n?1 個份額,然后計算最后一個份額為:
[S1]n=S1?∑i=1n?1[S1]i[ S_1 ]_n = S_1 - \sum _{i=1}^{n-1} [ S_1 ]_i [S1?]n?=S1??i=1n?1?[S1?]i?

顯然,如果前 n?1n-1n?1 個份額是從 Fp\mathbb{F}_pFp? 中均勻隨機選擇的,那么最后一個份額也在 Fp\mathbb{F}_pFp? 中是均勻分布的(即使只有其中一個是均勻隨機的也同樣成立)。這是一種實現完美隱私(perfect privacy)的簡單方式:

  • 即使攻擊者看到最多 n?1n-1n?1 個份額,也無法得知原始值 S1S_1S1? 的任何信息。

3.2 本地累加(Local accumulation)

在這一步中,每位員工將自己生成的第 iii 個份額發送給第 iii 個參與方。以1號員工為例,他們會將 [S1]2[ S_1 ]_2[S1?]2? 發送給2號員工,[S1]3[ S_1 ]_3[S1?]3? 發送給3號員工,依此類推。1號員工最終會從其他員工那里接收到以下份額:
[S2]1,[S3]1…,[Sn]1[ S_2 ]_1, [ S_3 ]_1 \ldots, [ S_n ]_1 [S2?]1?,[S3?]1?,[Sn?]1?

同時他們還持有自己生成的份額 [S1]1[ S_1 ]_1[S1?]1?

接下來,每位員工可以將所有收到的份額進行本地累加(Local accumulation):
[S]1=[S1]1+[S2]1+…+[Sn]1[ S ]_1 = [ S_1 ]_1 + [ S_2 ]_1 + \ldots + [ S_n ]_1 [S]1?=[S1?]1?+[S2?]1?++[Sn?]1?

然后將這個累加結果 [S]1[ S ]_1[S]1? 發送給其他所有員工。

3.3 重構(Reconstruction)

最終,每位員工都將收到其他員工累加的份額:
[S]1,[S]2,…,[S]n[ S ]_1, [ S ]_2, \ldots, [ S ]_n [S]1?,[S]2?,,[S]n?

因此,每個人都可以獨立地重構最終輸出,即將所有 份額 相加:
S=[S]1+[S]2+…+[S]nS = [ S ]_1 + [ S ]_2 + \ldots + [ S ]_n S=[S]1?+[S]2?++[S]n?

這個結果正是所有私有輸入的總和。

要理解為什么這樣有效,可以注意到,在這種秘密共享方案中,份額具有加法同態性(additive homomorphism):

  • 兩個 秘密的份額 相加,得到的是這兩個 秘密和 的份額。

在這個具體案例中,之所以能使用這么簡單的協議,是因為要共同計算的函數對私有輸入來說是線性的。而一般情況下,MPC 協議可以用于計算任意函數,但這就需要更復雜的技術。

若想深入了解 MPC 構造的原理,一個很好的起點是:

  • Y. Lindell 2020年的綜述論文Secure Multiparty Computation (MPC)。

4. MPC 協議的性質

一個 MPC 協議應滿足兩個主要性質:

  • 正確性(Correctness):協議的輸出應該是函數的正確輸出,就像各方在明文下直接計算的結果一樣。
  • 隱私性(Privacy):各方除了函數的輸出外,不應獲知其他參與方的任何私有輸入信息。

一般來說,假設有一些參與方可能會被腐化,也就是說,攻擊者可能能夠看到這些參與方的輸入以及它們之間交換的消息。如果一個 MPC 協議即使在最多 ttt 個參與方被腐化的情況下仍然能保持隱私性,則稱該協議是 ttt-隱私(ttt-Private) 的。如果被腐化的參與方超過 ttt 個,那么可能就會泄露關于誠實參與方私有輸入的信息。

在 本文所提及的“MPC-in-the-Head 轉換” 這個基本的轉換中,只要求 2-隱私(2-Privacy) —— 也就是說,只要腐化的參與方不超過兩個,隱私性就仍然能夠被保證。

此外,本文所描述的 MPC 協議(“MPC-in-the-Head 轉換” )只需要在半誠實模型(semi-honest model)下是安全的。也就是說,假設所有參與方都會誠實地執行協議,但可能試圖在執行過程中盡可能多地獲取信息。這類參與方通常被稱為“誠實但好奇(honest but curious)”。如,前文描述的那個簡單協議就假設所有參與方都誠實地遵守協議流程:如果有參與方偏離協議執行流程,最終輸出可能會被錯誤地計算出來。

最初的 IKOS 轉換 將底層的 MPC 協議視為一個黑盒,但需要指出的是,在一些效率更高的方案中,MPC 協議是經過特別設計的,以便在應用轉換時能導出一個高效的零知識證明系統。

5. MPC-in-the-Head 轉換

“MPC-in-the-Head 轉換的目標是:

  • 利用具備上述性質的任意一個 MPC 協議,來構建一個零知識證明系統,用于某個NP關系 R?X×W\mathcal{R} \subseteq \mathcal{X} \times \mathcal{W}R?X×W

在這種新的設定中,有兩方參與者:

  • 證明者(prover)
  • 和 驗證者(verifier)。

證明者希望讓驗證者相信自己知道一個見證 www,滿足 (x,w)∈R(x, w) \in \mathcal{R}(x,w)R,其中 xxx 是公開輸入。

舉個例子,關系 R\mathcal{R}R 可以是 SHA-256 哈希函數的原像關系:
R={(x,w)∣SHA256(w)=x}\mathcal{R} = \{(x, w) \mid \text{SHA256}(w) = x\} R={(x,w)SHA256(w)=x}

證明者將見證 www 拆分為加法份額 w1,w2,…,wnw_1, w_2, \ldots, w_nw1?,w2?,,wn?,使得所有份額的和等于原始的見證 www
w=w1+w2+?+wnw = w_1 + w_2 + \cdots + w_n w=w1?+w2?+?+wn?

接著,證明者會在“自己的腦海中(in its head)”模擬整個 MPC 協議:

  • 可以想象這是在導演一場由 nnn 個布偶角色參與的小型舞臺劇,每個角色代表一個協議參與方。
  • 這些“布偶”按照一套腳本(即 MPC 協議的執行步驟)進行互動。
  • iii 個參與方持有份額 wiw_iwi? 作為自己的私有輸入,所有參與方都共享公開輸入 xxx
  • 這些模擬的參與方共同計算的函數如下:如果關系滿足就返回 1,否則返回 0:
    f(x,w1,w2,…,wn)={1if?R(x,w1+w2+…+wn)0otherwisef(x, w_1, w_2, \ldots, w_n) = \begin{cases} 1 &\text{if } \mathcal{R}(x, w_1 + w_2 + \ldots + w_n) \\ 0 &\text{otherwise} \end{cases} f(x,w1?,w2?,,wn?)={10?if?R(x,w1?+w2?++wn?)otherwise?

請注意,由于關系 R\mathcal{R}R 屬于 NP\mathsf{NP}NP,它擁有一個多項式時間的驗證算法。因此函數 fff 也是高效可計算的:

  • 它只需要對局部見證進行求和,然后驗證該關系是否成立。

舉一個具體的例子:對于 SHA-256 原像關系,MPC 協議要計算的函數如下所示:

def f(x, w_1, w_2, ..., w_n):w = w_1 + w_2 + ... + w_nif SHA256(w) == x:return 1else:return 0

在實際中,這個函數通常被表示為定義在某個有限域上的算術電路(arithmetic circuit) CCC

在模擬完 MPC 協議后,證明者會為每個參與方生成一個 view(視圖)。每個視圖包含:

  • 該參與方的私有輸入;
  • 該方在模擬執行期間發送和接收的所有消息。

如,如果第 iii 個參與方向第 jjj 個參與方發送了一條消息 mmm,那么:

  • iii 方的視圖中將包含一個外發消息 out(j,m)\text{out}(j, m)out(j,m)
  • jjj 方的視圖中將包含一個接收消息 in(i,m)\text{in}(i, m)in(i,m)

在這里插入圖片描述
接下來,證明者會將所有參與方視圖的承諾(commitment)發送給驗證者。承諾方案(commitment scheme)是一種密碼學原語:

  • 它允許一方對某個值進行承諾(即固定但不公開),并在之后可以選擇打開該承諾來揭示該值。

一個承諾 c=Comm(x)c=Comm(x)c=Comm(x) 應該滿足以下兩個性質:

  • 隱藏性(hiding):該承諾 ccc 不泄露任何關于值 vvv 的信息;
  • 綁定性(binding):證明者無法在之后打開一個不同的值 y≠xy \neq xy=x,卻讓驗證者相信它是 ccc 的合法打開值。

一個具體示例是,使用抗碰撞哈希函數(collision-resistant hash function)來實現簡單的承諾方案:

c = H(v || r)

其中 vvv 是要承諾的值,rrr 是某個隨機數。

def commit(x: bytes) -> bytes:nonce = random(16)return sha256(x + nonce)def verify_opening(x: bytes, nonce: bytes, commitment: bytes) -> bool:return len(nonce) == 16 and sha256(x + nonce) == commitment

在證明者將每個視圖的承諾發送給驗證者之后,驗證者會隨機選擇兩個參與方(設為第 iii 個和第 jjj 個),并要求打開這兩個參與方的視圖。隨后,證明者將這兩個視圖以明文形式發送給驗證者。
在這里插入圖片描述

此時,驗證者可以獲得以下信息:

  • 兩個輸入 wiw_iwi?wjw_jwj?
  • 兩個參與方(iiijjj)在協議執行過程中發送和接收的所有消息記錄。

驗證者會檢查以下幾點:

  • 所給視圖是對應承諾的有效打開值;
  • iii 個和第 jjj 個參與方誠實地遵守了協議流程;
  • 兩個視圖彼此一致,即任何一條雙方之間交換的消息,在兩邊的記錄中內容完全一致;
  • 兩個打開的視圖一致地認為函數的輸出是 111(即計算結果正確)。

在這里插入圖片描述

Soundness(完備性):

  • 該方案的完備性(soundness)直接依賴于底層 MPC 協議的正確性。假設 MPC 協議具有完美正確性,那么如果證明者誠實地模擬協議執行,輸出結果必然是正確的。
    但如果證明者嘗試作弊,它必須至少在一個參與方的視圖中作弊。這意味著總會有至少一對視圖與誠實執行的協議不一致。驗證者隨機選擇兩方來檢查的情況下,選中這一對不一致視圖的概率是 1/(n2)1 / {{n}\choose{2}}1/(2n?),因此,證明者成功作弊的概率是:
    ε=1?1/(n2)\varepsilon = 1 - 1 / {n\choose{2}} ε=1?1/(2n?)
    如同所有零知識證明系統一樣,只要重復執行足夠多次,就可以將 soundness error(證明者成功作弊的概率)降低到指數級小。

Zero-knowledge(零知識性):

  • 零知識性(Zero-knowledge)則直接基于底層 MPC 協議的隱私性。只需注意到,驗證者最多只能看到兩個參與方的視圖,而由于假設底層的 MPC 協議是 222-Private 的,因此驗證者無法從中獲得關于其他參與方私有輸入的任何信息。此外,知道 wiw_iwi?wjw_jwj? 也不會泄露任何關于完整見證 www 的信息。

5.1 消除交互(Removing interaction)

該協議具有一個非常優美的特性:

  • 它是一個公共隨機幣協議(public-coin protocol)。

這意味著驗證者不參與任何復雜操作,只需采樣隨機挑戰并發送給證明者即可。正因為如此,可以使用標準的 Fiat-Shamir 轉換 將該協議轉化為非交互式零知識證明(NIZK)。

5.2 協議改進(Improvements)

雖然上述協議在實踐中效率較低,但后續的一些具體實現對該基本構造進行了大量優化。其中一個導致效率低的主要原因是:

  • 為了使 soundness error(欺騙成功的概率)足夠低,證明者必須執行許多輪協議。
    • 這是因為在每一輪中,驗證者只打開兩個視圖,因此單輪的 soundness error 較高。

舉一個具體例子,如果 n=8n = 8n=8,那么證明者在單輪中成功作弊的概率為:
1?1/(82)≈96.4%1 - 1 / {8\choose{2}} \approx 96.4 \text{\%}1?1/(28?)96.4%

一個直接的改進方法是使用一個 (n?1)(n - 1)(n?1)-Private 的 MPC 協議,使得證明者可以安全地打開除一個之外的所有視圖,而不會泄露隱私(不犧牲零知識性)。在這種設定下,驗證者只選擇一個視圖保持私密,而證明者向驗證者公開其余所有參與方的視圖。

這種方法顯著降低了 soundness error,此時:

  • 騙局必須發生在那個被保留不公開的參與方身上,而被選中作為隱藏方的概率為 1n\frac{1}{n}n1?
  • 因此,單輪的 soundness error 變為:
    ε=1n\varepsilon = \frac{1}{n} ε=n1?

和之前一樣,當 n=8n=8n=8 時,成功欺騙的概率為:
18≈12.5%\frac{1}{8} \approx 12.5 \text{\%} 81?12.5%

6. 應用于后量子簽名的構造

由 MPC-in-the-Head 轉換所構造的零知識證明系統具有一些非常有趣的特性:

  • 如果使用的是一個抗量子攻擊的 MPC 協議,那么轉換后的零知識證明方案也將具備后量子安全性,因為整個轉換僅依賴于基礎的密碼學承諾(commitment),這些承諾可以通過抗碰撞哈希函數來實現,如 SHA3。
  • 證明的大小與電路規模線性相關,且具有非常小的常數系數,因此對于門數量較少的電路,在實踐中是高效的。
  • 證明者和驗證者的時間復雜度均與電路規模線性相關,基本上兩者所需的計算量是相當的。

這使得該方案在構建后量子數字簽名方案方面非常有吸引力。一般而言,要從零知識證明系統構造一個簽名方案,首先選擇一個單向函數 HHH,它滿足:

  • 計算 H(x)H(x)H(x) 是容易的;
  • 但給定 yyy,要找到 xxx 使得 H(x)=yH(x) = yH(x)=y 是困難的。

一個標準例子是取 HHH 為某個密碼學哈希函數,然后令關系 R\mathcal{R}R 為其原像關系:

  • 密鑰生成:私鑰 xxx 隨機采樣,公鑰為 y=H(x)y = H(x)y=H(x)
  • 簽名生成:對于某個消息 mmm,簽名者使用零知識證明系統來證明自己知道某個私有 xxx,使得 H(x)=yH(x) = yH(x)=y,其中 yyy 是公鑰。
    • 利用 Fiat-Shamir 轉換,可以高效地將消息 mmm 融入證明中。讓證明者發送的第一條消息就是該消息 mmm,然后協議照常繼續執行。
    • 這樣得到的就是一種“與消息綁定的知識證明(message-dependent proof of knowledge)”:簽名者證明其知道某個使公鑰成立的原像,但該證明僅對某個特定消息 mmm 有效。
    • 注意,驗證者生成的每個挑戰都是依賴于該初始消息 mmm 的,因此這個簽名不能在其他消息上復用。
  • 簽名驗證:驗證者首先檢查證明中包含的消息是否等于 mmm,然后驗證關聯的零知識證明是否有效。

目前已經有多個具體簽名方案基于這一思想被提出,例如:

  • 2016年論文 ZKBoo: Faster Zero-Knowledge for Boolean Circuits,開源代碼實現見:
    • https://github.com/Sobuno/ZKBoo(C語言))
  • 2017年論文 Picnic(Post-Quantum Zero-Knowledge and Signatures from Symmetric-Key Primitives),開源代碼實現見:
    • https://github.com/Microsoft/Picnic(C語言)
    • https://github.com/isec-tugraz/fish-begol(C語言+Python)
  • 2018年論文 KKW18(Improved Non-Interactive Zero Knowledge with Applications to
    Post-Quantum Signatures)
  • 2023年論文 FAEST(Publicly Verifiable Zero-Knowledge and Post-Quantum Signatures
    From VOLE-in-the-Head),開源代碼實現見:
    • https://github.com/faest-sign/faest-rs/tree/crypto-2023(Rust)

值得注意的是,Ligero 零知識證明系統也可以被看作是對 MPC-in-the-Head 轉換的一種優化實現:

  • Ligero通過使用對主動攻擊者安全的 MPC 協議,成功實現了次線性(sub-linear)證明大小。
  • 開源代碼見:https://github.com/ligeroinc/ligero-prover(C++和WebAssembly)

參考資料

[1] zkSecurity團隊2025年2月20日博客 A Gentle Introduction to the MPC-in-the-Head Transformation

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92275.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92275.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot的優缺點

題目詳細答案優點快速開發:Spring Boot 通過自動配置和大量的開箱即用功能,使得開發者可以快速啟動和運行一個應用程序,無需進行繁瑣的配置工作。簡化配置:Spring Boot 提供了自動配置和 "starter" 依賴,簡化…

[激光原理與應用-171]:測量儀器 - 能量型 - 激光能量計(單脈沖能量測量)

一、工作原理激光能量計通過光電效應或光熱效應將激光脈沖能量轉換為可測量的物理信號,核心原理可分為兩類:光電型原理光電效應:激光照射光電材料(如硅、硒化鋅)時,光子激發電子產生光電流或光電壓。通過測…

四、應急響應

一、linux入侵排查 思路: 1、查看帳號 查看/etc/passwd文件中使用 /bin/bash 作為默認 shell 的用戶。 查詢特權用戶特權用戶(uid 為0) 查詢可以遠程登錄的帳號信息 除root帳號外,其他帳號是否存在sudo權限。 禁用或刪除多余及可疑的帳號 用find命令查看擁有…

類和對象(中):類的默認成員函數、構造函數、析構函數

🔥個人主頁:胡蘿卜3.0 🎬作者簡介:C研發方向學習者 📖個人專欄: 《C語言》《數據結構》 《C干貨分享》 ??人生格言:不試試怎么知道自己行不行 目錄 一、類的默認成員函數 二、構造函數 三…

如何優雅地刷力扣 LeetCode - Easy

Source 力扣LeetCode題庫 App > LeetCode > 題庫 > 題解 Notes 仔細審題,明確輸入輸出,通過測試用例。先特殊,后尋常。逆向思維。 在條件語句中用!代替,提前終止循環,減少嵌套層級(else&#…

AI繪畫:生成唐初程咬金全身像提示詞

根據唐代歷史記載和藝術形象特征,以下是優化后的中文Midjourney 提示詞,突出程咬金的猛將氣質與唐初甲胄細節: 核心提示詞(戰場形象) 中年猛將程咬金,全身甲胄像,唐初光要甲制式:身…

【實時Linux實戰系列】實時數據流處理框架分析

背景與重要性在當今數字化時代,數據的實時處理變得至關重要。無論是金融交易、工業自動化還是物聯網(IoT)設備,都需要能夠快速處理和響應數據流,以確保系統的高效運行和決策的及時性。實時Linux操作系統因其低延遲和高…

一周學會Matplotlib3 Python 數據可視化-Hello World編寫

鋒哥原創的Matplotlib3 Python數據可視化視頻教程: 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili Matplotlib3簡介 Matplotlib 是 Python 最流行的數據可視化庫之一,廣泛應用于科學計算、數據分析、科研繪…

中國MCP市場:騰訊、阿里、百度的本土化實踐

中國MCP市場:騰訊、阿里、百度的本土化實踐 🌟 Hello,我是摘星! 🌈 在彩虹般絢爛的技術棧中,我是那個永不停歇的色彩收集者。 🦋 每一個優化都是我培育的花朵,每一個特性都是我放飛的…

房產證識別在房產行業的技術實現及應用原理

技術實現1. 圖像采集與預處理圖像獲取:通過高分辨率掃描儀或手機攝像頭獲取房產證圖像預處理技術:去噪處理(消除掃描噪聲)圖像增強(提高對比度)傾斜校正(自動旋轉至正確角度)二值化處…

決策樹技術詳解:從理論到Python實戰

?決策樹像人類的思考過程,用一系列“是/否”問題層層逼近答案?一、決策樹的核心本質決策樹是一種模仿人類決策過程的樹形結構分類/回歸模型。它通過節點(問題)?? 和 ?邊(答案)?? 構建路徑,最終在葉節…

Herd-proof thinking

Let’s dive into “herd-proof thinking” — the mindset and tactics that help you stay sharp, independent, and immune to manipulative systems.🧠 Part 1: The Foundation of Herd-Proof Thinking 1. Recognize Incentives“If you don’t know who the pr…

day068-DevOps基本知識與搭建遠程倉庫

文章目錄0. 老男孩思想-傳統文化1. 運維人員對網站集群的關注項2. CI、CD3. DevOps4. 環境5. Git5.1 **為什么叫 “Git”?**5.2 Git的核心設計理念5.3 Git工作空間5.4 分支 branch5.5 命令5.5.1 配置git用戶信息5.5.2 初始化git倉庫5.5.3 將文件放入暫存區5.5.4 提交…

分布式文件系統07-小文件系統的請求異步化高并發性能優化

小文件系統的請求異步化高并發性能優化222_分布式圖片存儲系統中的高性能指的到底是什么?重構系統架構,來實現一個高性能。然后就要做非常完善的一個測試,最后對這個系統做一個總結,說說后續我們還要做一些什么東西。另外&#xf…

【C#補全計劃:類和對象(十)】密封

一、密封類1. 關鍵字:sealed2. 作用:使類無法再被繼承;在面向對象設計中,密封類的主要作用是不允許最底層子類被繼承,可以保證程序的規范性、安全性3. 使用:using System;namespace Sealed {// 使用sealed關…

【視覺識別】Ubuntu 22.04 上安裝和配置 TigerVNC 魯班貓V5

系列文章目錄 文章目錄系列文章目錄前言一、問題現象二、安裝和配置步驟1.引入庫2.安裝完整組件3.修改 ~/.vnc/xstartup4. 設置權限5. 設置開機自啟(Systemd 服務)總結前言 開發平臺:魯班貓V5 RK3588 系統版本:Ubuntu 22.04 一、…

模擬-38.外觀數列-力扣(LeetCode)

一、題目解析1、替換的方法:“33”用“23”替換,即找到相同的數,前一位為相同數的數量,后一位為相同的數2、給定n,需要返回外觀數列的第n個元素二、算法原理由于需要統計相同元素的數目,所以可以使用雙指針…

垃圾桶滿溢識別準確率↑32%:陌訊多模態融合算法實戰解析

原創聲明本文為原創技術解析文章,涉及的技術參數與架構設計均參考自《陌訊技術白皮書》,轉載請注明來源。一、行業痛點:智慧環衛中的識別難題隨著智慧城市建設推進,垃圾桶滿溢識別作為智慧環衛的核心環節,面臨多重技術…

掃地機器人的幾種語音控制芯片方案介紹

?掃地機器人語音控制芯片方案介紹在智能家居領域,掃地機器人的智能化程度不斷提升,語音控制功能成為提升用戶體驗的關鍵因素。以下為您介紹幾款常用于掃地機器人語音控制的芯片方案。WT2606B 芯片方案性能優勢:基于先進的 RISC - V 32 位開源…

快速開發實踐

基于后端項目的前端開發實踐記錄 📋 項目概述 項目名稱: 比特奧定制報表系統 技術棧: Vue 3 Element Plus Vite (前端) Spring Boot (后端) 開發模式: 前后端分離 項目結構: 單體倉庫包含前后端代碼 🏗? 項目架構分析 目錄結構設計 bitao-defined_re…