本文重點
- 打破 Code is Law 迷思:剖析當程式 Bug 造成鉅額損失時,法務如何透過條款設計,擊破「程式即法律」的抗辯並追回資產。
- 解決「不可篡改」困境:當法院判決撞上區塊鏈特性,教你運用「脫鉤與重鑄」機制,讓法律強制力在鏈上也能落地。
- 五大法律防禦工事:從解決匿名被告的「入口實名」,到符合 GDPR 的「加密銷毀」,建立滴水不漏的 Web3 風險護盾。
Code is Law?——法官可不這麼認為
歡迎來到番外篇。如果說前三集我們是在教你如何「踩油門」,享受飆速的快感;那麼這一集,我們得來談談「安全氣囊」。
在Web3或區塊鏈的圈子裡,有一句被工程師奉為圭臬的信仰,叫做"Code is Law"(程式碼即法律)。這句話聽起來既龐克又性感。它的意思是:在這個去中心化的世界裡,沒有人治,只有數學。程式碼寫什麼就是什麼,一旦部署上鏈,不可篡改、自動執行,連上帝都不能反悔。
聽起來很美好,對吧?
但身為一個在真實世界打滾過的法律人,我得潑你一盆冷水:這句話,只在「不出事」的時候成立。
試想一下這個場景:你的Smart Contract因為工程師手滑寫錯了一個邏輯(Bug),原本該分給作者的10%分潤,變成了100%。公司帳戶在一秒鐘內被清空,損失新臺幣1,000萬。
這時候,對方的工程師兩手一攤,指著那句信仰說:「嘿,Code is Law。程式碼允許我拿這筆錢,這是合約的『功能(Feature)』,不是Bug。我憑實力拿的,為什麼要還?」
這時候,你會看到你們家老闆的臉色,從鐵青變成慘白,然後轉頭問你:「法務,告死他!把錢追回來!」
歡迎回到現實世界。在這裡,坐在法檯上的那位穿著黑袍的法官,他手裡拿的是木槌,不是鍵盤;他翻的是《六法全書》,不是GitHub的原始碼。
當「不可篡改的程式」正面撞上「強制執行的法律」,誰會贏?
這就是本篇要探討的核心衝突。我們這系列談了很多效率、信任與資產,但如果我們不誠實面對技術的陰暗面,那這套戰略就不完整。
這篇不談怎麼飛得高,我們談怎麼在墜落時安全著陸。準備好你的盾牌了嗎?我們要進入最硬核的法律攻防戰了。
第一戰場:Bug還是Feature?(程式錯誤vs.不當得利)
讓我們從一個最經典的「鬼故事」開始。
你在Smart Contract裡寫了一個分潤邏輯,原本應該是「每賣出一本書,分給作者10塊錢」。結果工程師昨晚沒睡飽,小數點點錯位置,變成了「每賣出一本書,分給作者100塊」。
等到你發現的時候,合約已經自動執行了1,000次。公司帳戶裡憑空蒸發了9萬塊(本來該付1萬,付成了10萬)。
這時候,你氣急敗壞地聯絡那位作者(或者那個利用漏洞的駭客),要求他把多拿的錢吐出來。結果對方回了你一句Web3圈的名言:「嘿,這不是Bug,這是Feature(功能)。」
對方的邏輯是這樣的:「Smart Contract本身就是合約的全部。既然程式碼允許我領100塊,那就表示這是我們雙方『合意』的規則。我照著規則玩,憑什麼說我拿錯了?」
這句話在區塊鏈的技術論壇裡,可能會獲得一片掌聲。但在法院裡?這句話會被法官打得滿地找牙。

讓我們用一個阿嬤都聽得懂的例子來反駁:如果你去ATM領1,000塊,結果機器故障吐了10,000塊給你。請問,你能跟銀行說:「嘿,是你的機器以此方式運作的(Code allow edit),所以這9,000塊是我的合法收入」嗎?
當然不行。這在民法上,有一個非常古老但強大的名字,叫做「不當得利(Unjust Enrichment)」。
雖然在區塊鏈上,交易是「不可逆」的(Factually Impossible,你無法像銀行一樣直接扣款沖正);但在法律上,這筆獲利是「無法律上原因」的(Legally Void,欠缺給付目的)。
所以,身為法務,你的攻擊路徑很清晰:雖然我無法在「鏈上」強迫你把幣轉回來,但我可以在「鏈下」請求法院判決你「返還其價額」。(簡單說:你把幣吞了沒關係,請你拿等值的現金來賠。)
但在法庭上,你會撞上這三堵牆。
別高興得太早。雖然在純粹的法律推論上,不當得利這條路是通的。但當這個場景發生在Web3世界時,對造律師絕對不會乖乖就範。你會遇到傳統法律沒遇過的「三個盲點」:
盲點一:對方會主張「Code is Law,所以我沒有『無法律上原因』」
這是被告最常使用的防禦邏輯。傳統上,我們認為多給錢是「錯誤」,欠缺給付目的。但在Web3,被告會主張:「智慧合約本身就是合約的全部。」「只要程式碼允許我提領這筆錢(哪怕是你眼中的Bug),這就是符合規則的『有效操作』。既然合約(Code)允許,我就有『法律上原因』,何來不當得利?」這時候,法官就被迫要去判定一個哲學問題:合約的本體到底是「自然語言的意圖(Off-chain intent)」還是「程式碼的邏輯(On-chain reality)」?
盲點二:「償還價額」的計算基準點是個大坑
如果是新臺幣,還好計算。但加密貨幣的波動比雲霄飛車還大。試想:程式出錯當天,多給的幣值1,000萬臺幣。等到判決確定(兩年後),該幣暴跌剩10萬臺幣。被告要還1,000萬(受領時價額)?還是還10萬(現存利益)?還是可以直接買同數量的幣還你?這一點在法律上極具爭議,往往成為雙方律師的激戰區。
盲點三:贏了判決,輸了執行
這是最痛的實務問題。 就算你打贏了官司,法院判對方要賠錢。但現實是,對方只是一個匿名的錢包地址。你不知道他是誰、他在哪個國家、他名下有沒有財產。 即便你知道他是誰,如果他的資產都在鏈上(抗審查),法院的執行命令發給銀行沒用(他沒存款),發給交易所(如果是冷錢包)也沒用。結果就是:你拿到了一張完美的勝訴判決書,但換不回一毛錢。
【賈斯伯的防禦工事】
為了避免對方在法庭上拿「Code is Law」跟你在那邊扯皮,你必須在最源頭的T&C(使用者條款)裡,埋下一顆地雷:
條款範例:「本Smart Contract之執行結果,若與本協議之『自然語言條款』或『商業本意』不符時(如因程式錯誤導致之異常給付),應以自然語言條款為最終依據。使用者同意,將該異常視為無效,並負有返還義務。」
(進階法律攻防:顯失公平的帝王條款)假如對造律師很厲害,反過來主張:「你們T&C寫得不清不楚,既然程式碼跑過了,就代表雙方『合意』接受這個結果。」這時候,請祭出民法的帝王條款——「誠信原則」與「顯失公平」。即使雙方曾約定以程式碼為準,但若程式錯誤導致的結果極度荒謬(例如1塊錢買下整間公司),法律仍可介入調整。你要主張:沒有任何理性的商業主體會同意這種自殺式的合意。這層防護網,比T&C更底層、更強大。
這就是法務的價值。我們不否認程式碼的效力,但我們必須保留「人類語言的最終解釋權」。當程式碼發瘋的時候,必須要有法律這條韁繩,把它拉回來。
第二戰場:當聖旨難違碰上技術不能(不可篡改vs.法院判決)
這是所有法律人最感到無力,也最荒謬的時刻。
在傳統世界裡,法院的判決就是「聖旨」。法官敲下木槌說:「合約無效,被告應返還100萬給原告。」下一秒,強制執行命令發到銀行,銀行經理就算再不情願,也得乖乖按下凍結鍵,把錢轉回來。
但在Web3的世界裡,這道聖旨可能會變成一張廢紙。
【場景:消失的私鑰與不動如山的資產】
假設法院判決被告敗訴,必須歸還那枚價值連城的NFT(或者是500顆ETH)。結果被告雙手一攤,露出無辜的眼神說:「報告法官,我也很想還啊!可是我的私鑰弄丟了(這在圈內有個專有名詞叫Boating Accident)。沒有私鑰,神仙也轉不動那筆錢,我也沒辦法。」
或者更尷尬的情況:Smart Contract當初寫死了「只能進、不能退」,根本沒有設計退款函數(Withdraw Function)。
這時候,法庭會陷入一片死寂。法官的判決在法律上(De Jure)有效,但在事實上(De Facto)卻執行不了。這就像小偷開走了你的車,法院判車子歸你,但小偷把車鑰匙丟進大海裡,車子就停在那,誰也開不走。
這時候,法務該怎麼辦?難道我們要讓這筆資產變成區塊鏈上的「數位殭屍」嗎?
【賈斯伯的解套戰術:脫鉤與重鑄(De-peg & Re-mint)】
如果在純粹的去中心化金融(DeFi)裡,這題可能無解。但在我們企業經營的商業應用(如會員證、證書、RWA資產)裡,法務必須預先設計一套「上帝視角」的救援機制。
這招叫做:「你不還?那我就讓它變廢紙。」
既然我們動不了鏈上的Token,那我們就動鏈下的「權益」。
1.脫鉤(De-peg):宣告死亡
- 法務拿著法院判決書,通知IT部門。
- IT在後端的資料庫(Oracle)中,將被告持有的那枚Token#1024列入「黑名單(Blacklist)」。
- 從這一刻起,雖然被告的錢包裡還有那枚Token,但它已經失去了所有功能(不能登入、不能領分潤、不能兌換贈品)。它在法律意義上已經「死」了。
2.重鑄(Re-mint):借屍還魂
- IT部門重新鑄造一枚新的Token#1025。
- 將原本屬於#1024的所有權益(累積的點數、會員等級),全部繼承到這枚新幣上。
- 最後,將新幣發送給原告(受害者)。

看懂這個邏輯了嗎?這就像是你掛失信用卡。舊卡片還在小偷手上(事實上持有),但他刷不過了(法律上失效);銀行發了一張新卡給你,你恢復了消費能力。
這招雖然犧牲了一點「去中心化」的浪漫(承認了中心化機構有生殺大權),但它保住了「法律的尊嚴」與「商業的秩序」。
身為操盤手,你必須在T&C裡埋下這條伏筆:
「本公司保留在特定法律情境下(如法院判決),註銷特定Token權益並重新發行之權利。」
(進階法律攻防:這是「安全閥」還是「侵權」?)請注意,這招一定要有「事前授權」。如果你沒有在用戶第一次連結錢包時,就明確取得他同意:「若發生爭議,發行方有權凍結或銷毀我的Token」,那你事後擅自把他的資產變廢紙,對方是可以反告你「侵權」或「違約」的。因為在鏈上,那個Token確實還在他手裡。所以,這條款不是寫好看的,它是你執行私刑正義的唯一合法執照。
第三戰場:被告是個幽靈(匿名性vs.管轄權)
如果你覺得前兩個戰場已經夠頭痛了,那歡迎來到地獄。前兩關至少你還知道對手是誰(那個寫錯Code的工程師、那個賴帳的被告),但在這一關,你的對手是「空氣」。

【場景:法官大人,我要告那串亂碼】
假設有一天,你的Smart Contract被駭客攻擊,或者有個用戶利用漏洞把獎金池洗空了。你氣急敗壞地跑到法院按鈴申告。
法官:「原告,請填寫被告的姓名、身分證字號和戶籍地址。」你(尷尬地看著手上的資料):「呃...報告法官,我只知道他的名字叫0x7a250d...(後面還有30個亂碼)。」法官:「......(警衛,把他叉出去。)」
這就是Web3的真實荒謬劇。在傳統法律世界,訴訟的前提是「人(Legal Person)」。但在區塊鏈上,互動的主體是「地址(Address)」。而這個地址,不需要實名認證,不需要綁定手機,它就像是一個戴著面具的幽靈。
你連支付命令都發不出去,因為你根本不知道要寄到哪裡。甚至,就算你查到了IP,發現他在巴拿馬,或者他的伺服器架在公海上。你要去哪裡告?難道要把這場官司打成環遊世界紀錄片嗎?
這時候,法務如果不做點什麼,公司就只能自認倒楣。
【賈斯伯的捉鬼特攻隊:入口管制與主場優勢】
既然「Code」管不到鏈下的身分,那我們就要用「Law」在門口設下路障。
第一招:入口實名(On-ramp KYC)
別被「去中心化」的口號給洗腦了。只要你是做正經生意的(發證書、賣產品、做訂閱),請務必堅持「前端實名」。即便後端的資產是在鏈上跑,前端的登入入口,必須強制綁定Email或手機。這是把「幽靈」變成「人」的唯一繩索。當出事時,這就是你向法院聲請調查證據的唯一線索。
第二招:鎖死管轄權(合意管轄)
為了避免你的官司變成跨國旅遊,你必須在T&C裡寫死這條:
「凡因本Smart Contract所生之爭議,雙方同意以臺灣臺北地方法院為第一審管轄法院。」
這叫做「搶主場優勢」。雖然這擋不住俄羅斯的黑客,但對於那些想鑽漏洞的商業奧客,這條款能確保你不用飛去開曼群島跟他吵架。
(進階法律攻防:B2B有效,B2C未必)但身為法務必須誠實面對:這招對消費者(B2C)可能會失效。依據各國消保法(包含台灣),定型化契約通常不得剝奪消費者在「住所地法院」起訴的權利。如果你的用戶是德國人,他依然可以在德國告你。所以,針對跨國業務,更進階的防禦是引入「仲裁條款(Arbitration)」。國際仲裁裁決在各國法院的承認度(紐約公約),往往比單一國家的法院判決來得高。
第三招:破解「私鑰被盜」的無敵星星
假設你終於抓到人了,被告出庭了。他通常會使出最後一招大絕:「法官大人,那個帳號是我的沒錯,但那天不是我操作的!我的私鑰被駭了(My dog ate my homework)!我也是受害者啊!」
這招在幣圈幾乎是無敵星星。因為除了上帝,沒人知道私鑰是不是真的被盜。這時候,法務必須主張一種新的法律見解:「私鑰持有者應負絕對保管責任」。
你要告訴法官:「除非被告能提出報案紀錄或資安鑑識報告,證明他真的被駭,否則法律應推定:使用私鑰簽章的人,就是本人。」
如果我們接受「私鑰被盜」可以隨便當理由,那全台灣的電子簽章法都可以廢了。
記住,在這個匿名的荒野裡,法務寫下的每一條T&C,都是保護公司資產不被幽靈搬走的數位符咒。
第四戰場:裁判說謊了怎麼辦?(預言機錯誤vs.違約責任)
如果前面是在捉鬼,那這一關就是在「抓戰犯」。
Smart Contract有一句名言:「Garbage In, Garbage Out(垃圾進,垃圾出)。」既然合約是瞎子,它只能聽Oracle(預言機)的話。但萬一,這個被我們奉為裁判的Oracle,那天剛好喝醉了呢?
【場景:當上帝(API)報錯了明牌】
假設你設計了一個「自動匯率避險合約」。規則是:當1ETH<1,000USDT時,系統自動幫客戶停損賣出。
某天深夜,提供報價的交易所API突然故障(或被駭客攻擊),發生了「插針(Flash Crash)」。在0.1秒內,API回傳了一個錯誤報價:ETH=0.1USDT。
Smart Contract看到這個數字,嚇瘋了,立刻忠實執行命令:「全部賣出!」下一秒,價格恢復正常。但客戶的資產已經被賤賣光了,損失慘重。
這時候,憤怒的客戶帶著律師殺過來:「你們系統有瑕疵!賠錢!」你的第一反應一定是覺得很冤枉:「這不是我的錯啊!是那個API給錯數據!我們也是受害者!」
你想轉頭去告那個API供應商(可能是某大交易所或數據公司)?抱歉,請翻開他們那落落長的服務條款(ToS)。你會在第18條看到一行小字:「本數據僅供參考,不保證準確性與即時性。本公司不對基於數據所做出之任何投資決策負責。」
現實是殘酷的:你的上游(數據商)早就把鍋甩乾淨了。在這個責任鏈條上,你是面對客戶的「最終責任人」。你不能說「因為報紙印錯股價,所以報社要賠我股票錢」。

【賈斯伯的雙重護盾:法律免責+技術防呆】
既然鍋甩不掉,那我們就要把鍋變小,甚至讓它消失。
護盾一:預言機最終性條款(Oracle Finality Clause)
你必須在T&C裡,把這個風險「轉嫁」給同意使用的用戶。
「用戶知悉並同意,本合約之執行完全依賴[指定Oracle]之數據。若該數據源發生故障、延遲或錯誤,除該錯誤係因本公司之故意或重大過失所致者外,本公司不負賠償責任。」
這句話的關鍵在於:把「絕對責任」降級為「過失責任」。只要不是我故意弄壞的,那就是天災(不可抗力),是用戶自己要承擔的投資風險。
護盾二:用技術證明你「已盡善良管理人注意義務」
光寫條款還不夠,法官會問:「你有沒有盡力防止錯誤發生?」這時候,你在【實戰篇】學到的「數據熔斷機制(Sanity Check)」就變成了你的呈堂證供。
你要拿著程式碼跟法官說:「法官你看,我有設計防呆機制。我寫了IF價格瞬間波動>50%THEN暫停交易。但這次API錯誤實在太離譜/太特殊,繞過了我的防護網。我已經盡力了(沒有重大過失)。」
這就是法務的攻防藝術:我們無法保證世界不出錯,但我們可以證明「我已經盡了全力」,讓法律責任停損在「意外」而非「疏失」。
第五戰場:永遠洗不掉的刺青(永久留存vs.被遺忘權)
最後這一關,我們不談錢,我們談「痕跡」。
年輕的時候,我們都可能做過一些蠢事。比如喝醉了在手臂上刺了前女友的名字,或者在網路上發了一些中二的貼文。好消息是,現代醫學有雷射除刺青,臉書有「刪除」按鈕。但在區塊鏈的世界裡,壞消息是:這裡沒有橡皮擦。
這就是區塊鏈最引以為傲的特性——「不可篡改性(Immutability)」。寫上去的資料,就像刻在石頭上的經文,過了100年它還會在那裡,連創造這條鏈的人都改不了。
這在金融記帳上是優點,但在隱私保護上,這是一場核災等級的災難。
【場景:當歐盟GDPR遇上頑固的區塊鏈】
歐盟的GDPR(通用資料保護規則)第17條賦予了公民一個非常浪漫的權利,叫做「被遺忘權(Righttobe Forgotten)」。意思是:當用戶說「我不玩了,請把我的資料刪掉」,企業必須把他的個資「徹底移除」。
這時候,法務的冷汗就流下來了。如果你當初設計Smart Contract時,天真地把用戶的姓名、Email、甚至是身分證字號直接寫進了鏈上...
恭喜你,你達成了一個史詩級的成就:「永久性違法」。因為你刪不掉。就算你發起一筆新交易去覆蓋它,舊的資料依然躺在「歷史區塊」裡,任何一個會用區塊鏈瀏覽器的人都能隨便看。
這不僅是罰款的問題,這是你的系統從根本上與現代人權法律互斥。
【賈斯伯的解套戰術:加密銷毀(Crypto-Shredding)】
既然「物理上」刪不掉,那我們就要用「數學上」的方法來刪。這招叫做「加密銷毀」。
請記住這條鐵律:「個資是輻射廢棄物,千萬不要直接倒進區塊鏈這片大海裡。」
正確的資料架構應該是這樣的:
- 資料隔離(Separation):用戶的真實身分(Name, ID, Email),請留在公司內部的傳統資料庫(SQL)裡。那裡有delete鍵,很安全。
- 加鹽雜湊(Salted Hash):要把資料放上鏈之前,請工程師做一道手續。拿用戶的ID,加上一串隨機亂碼(這叫Salt,鹽巴),然後丟進果汁機(Hash函數)打碎。你會得到一串看起來像亂碼的字串:0x9f8a...。
- 上鏈(On-chain):只把這串亂碼寫進Smart Contract。Smart Contract認得這串亂碼代表某個人,但它(以及全世界)都不知道這個人是誰。

【當用戶行使「被遺忘權」時...】
用戶:「請刪除我的資料。」法務:「沒問題。」
你的操作步驟:
- 回到公司內部的傳統資料庫。
- 刪除該用戶的個資,以及當初加的那把「鹽巴(Salt)」。
- 結果:鏈上雖然還留著那串0x9f8a...,但因為「解碼的鑰匙(鹽巴)」已經被我們銷毀了,這串亂碼就變成了「數學上永遠無法還原的數位垃圾」。
法律定性:在大多數國家的個資法解讀中,「無法還原的數據 ≠ 個資」。我們透過「毀掉鑰匙」的方式,達成了「銷毀保險箱內容」的法律效果。
(進階法律攻防:為什麼一定要「加鹽」?)這裡有個技術細節是法務必須堅持的:Hash必須是「高強度加鹽(Salted)」的。如果只是普通的Hash(例如把身分證字號直接運算),駭客只要拿著「字典(Rainbow Table)」去暴力比對,還是能還原出原始資料。那在法律上就不算「匿名化(Anonymization)」,頂多算「假名化(Pseudonymization)」,依然受到個資法與GDPR的管轄。所以,銷毀那把鹽(Key),才是合規的關鍵動作。
這就是法務在數位荒野中的生存智慧:我們無法改變區塊鏈「凡走過必留下痕跡」的特性,但我們可以決定留下的痕跡,是「有意義的線索」,還是一堆「無意義的亂碼」。
Smart Contract負責處理冰冷的資產邏輯,而將溫熱且敏感的人性隱私,留在我們還能控制的鏈下世界。
最好的Smart Contract,是Code與Law的雙重奏
這趟「番外篇」的旅程,走得有點驚心動魄。
我們聊了貪婪的Bug、無視判決的區塊鏈、像幽靈一樣的被告,還有那些永遠洗不掉的數位刺青。聽起來,Web3好像是一個充滿危險的西部荒野,到處都是拿著槍的搶匪和無法無天的牛仔。
你可能會問:「賈斯伯,既然坑這麼多,我們幹嘛還要用Smart Contract?乖乖用Word寫合約不好嗎?」
這是一個好問題。但請容我用極度坦承的態度回答你:因為我們回不去了。
一旦你見識過自動分潤的效率、體驗過無需許可的信任、擁有過不可偽造的資產,你就很難再忍受那些要蓋二十個章、跑三個月流程的舊世界。
重點不在於「Code」和「Law」誰比較厲害,或者誰該聽誰的。重點在於,這兩者從來就不是敵人,它們是最完美的互補搭擋。
- Code(程式碼)負責處理「常態」。它像是一條高速公路,負責那99%的、標準化的、重複的交易,讓商業能量以最高效率流動。
- Law(法律)負責處理「例外」。它像是高速公路旁的護欄與緊急煞車道,負責那1%的、失控的、爭議的狀況,確保車子翻了還能把人救出來。
最好的合約,不是純粹的程式碼(那太冷酷且危險),也不是純粹的文字(那太沒效率且昂貴)。最好的合約,是Code與Law的雙重奏。
而你,親愛的法務夥伴,你就是這場雙重奏的「指揮家」。
只有你懂法律的邊界,也只有你懂商業的邏輯。是你決定了什麼時候該讓程式碼飆速,什麼時候該用法律條款把風險攔下來。是你設計了那個「緊急暫停鍵」,是你寫下了那條「管轄權條款」,是你定義了那個「加密銷毀」的機制。
在這片數位的荒野中,工程師負責造路,業務負責開車,而你負責畫出那條「安全線」。
不要害怕風險。風險的存在,正是我們存在的價值。如果世界完美運作,就不需要法務了;正因為程式會出錯、人性有貪婪,所以才需要你站在那裡,用你的專業,圈出一塊讓所有人都能安心交易的領地。
拿起這份筆記(不管是前三篇的進攻地圖,還是這一篇的防禦工事),去成為那個定義未來的操盤手吧。
你的合約,從今天開始,不僅Smart,而且Safe。
(全系列.完)

















