QUEST LOG · December 23, 2025· UPDATED October 29, 2026

Solid(ar)ity 團結?從卡片與交流中找出你我

寫來推廣 Solid(ar)ity,名字取得太糟糕,導致搜尋困難。這篇也是主要來寫開發了整年的血淚史

我一直覺得密碼龐克(cypherpunk)是很酷的議題,但要怎麼落實到普通人手上,就是另一回事了。


2024 年的 DevCon,我開始重度接觸 DID(去中心化身份)以及身份如何真正落地的實作。當時在清邁跟朋友一起辦了一個小活動 WAMO ↗,順便推廣我們那時候想做的東西:一個以 P2P 交流為基礎的社交應用。至於這個應用該怎麼做,又是另一回事了。

# 名片,最古老的 P2P 協議

Devcon 待久了,主要工程師就是廢物,那麼大的場合根本沒辦法跟別人互動,只能使用觀察別人之術。在活動現場觀察了一陣子,我發現人跟人認識的方式其實沒怎麼變:交換名片、加 tg、互相 follow。

而名片本身就是一個很完美的 P2P 協議:

  • 不需要伺服器,我遞給你,你就有了
  • 不需要帳號,紙上寫什麼就是什麼
  • 我公司倒了,你手上的名片還在

甚至說在前公司就有人交換禮物(惡魔禮物)給名片,但你可以清楚地知道這是他的存在證明。

但它也有一個致命的問題:你沒辦法驗證上面寫的是真的。印一張寫著「某某大廠資深工程師」的名片,成本是零。

反過來,數位世界的身份都可以驗證,但全部押在平台上。LinkedIn 封你帳號、Twitter 改規則,你的身份就沒了,而且你跟誰認識、交換過什麼,全部是平台的資料。想想有點可悲 現代人的存在生存權力,竟然都無法掌握在自己的手裡。


# Solid(ar)ity 想做的事

而 Solid(ar)ity 就是想把這兩件事合起來:像紙本名片一樣是你自己的,又像數位身份一樣可以驗證。

我們在第一版實現的是把整個核心以 airdrop 去做交換,以 p2p 的方式,不透過任何中間方來交換你的身份,並儲存別人的身份作為聯絡人,並加上 webRTC 作為溝通橋樑。

後面慢慢修改之後成為一個「可驗證的個人頁 + 名片」,你可以想像成一個你自己握著鑰匙的 Linktree。頁面上的每一個連結、帳號、證明,要嘛可以被任何陌生人用密碼學驗證,要嘛就老實標成「無法驗證的自我聲明」。

幾個我們堅持的原則:

  1. 沒有儲存用戶資料的伺服器。不存使用者資料、不開帳號、不站在驗證的路徑上
  2. 綠勾勾代表「控制權」,不代表身份。它說的是「這個人現在控制這個帳號 / 網域 / 金鑰」,不是說他很有名、很誠實、或者真的是他說的那個人
  3. 證據只差一步。每個徽章點一下,就能看到平台自己的證明,例如一筆 DNS 紀錄、一則簽過名的貼文

而整個專案的大原則是一句話:「公司倒了,機制還在」。你的資料在你的手機、你自己的 iCloud 或 Google Drive;發布走 Nostr、atproto 這種不需要我們的開放網路,但我現在反而擔心這種大服務倒...;

但整體驗證全部在用戶裝置上跑。就算我們明天消失,每一張卡、每一個證明都還能驗。

# 交換卡片的那一刻

回到活動現場。兩個人見面,打開 app,掃一下 QR:

  • 你拿到的是對方簽過名的卡片,不是一張隨便的截圖
  • 對方決定要給你看哪些資訊,可以只證明「我是某某活動的參加者」,不用把整份資料攤開
  • 你存起來的聯絡人,之後對方更新了頁面,會安靜地重新驗證一次

整個過程沒有經過任何伺服器,就是兩支手機之間的事。跟遞名片一樣。


# 為什麼叫 Solid(ar)ity

名字是 Solidarity(團結),中間把 ar 括起來,剛好也是 Solidity。想表達的是:在信任越來越稀缺的網路上,人與人之間的連結,應該建立在可驗證、又不被任何人壟斷的基礎上。

然後……就是這個名字,讓它在搜尋引擎上幾乎找不到。搜 solidarity 會出現一堆工會跟社會運動,搜 solidity 全部都是智能合約教學。取名真的是工程師最大的弱點,這點我認了。

所以如果你看到這篇,歡迎直接去 GitHub ↗ 看看,或者下次活動遇到,我們來交換一張卡。