📜 [專欄新文章] [ZKP 讀書會] Tornado Cash
✍️ Jerry Ho
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Disclaimer: 本人與Tornade Cash專案及其員工無任何利益往來。
Tornado Cash是一個Ethereum上的原生隱私轉帳解決方案,使用zk-SNARK+Merkle Tree的路徑證明作為其核心隱私保護機制。
你知我知,Ethereum上的交易記錄是公開的,這使得任何一個人只要知道你的address,便可以在https://etherscan.io/ 之類的網站上查出有多少人和這個位置進行過交易,你做過什麼消費行為或是交易行為等。
或許這聽來不像是個問題,而想要隱藏自己的交易記錄甚至聽起來反而像是不法分子的銷贓行為。
但試想下開情境:因為我曾經使用ethereum捐款給一個政治不正確的專案/組織,而我在接受dd/kyc/reference check的時候因為我的ethereum address就寫在自己的blog上而被查了個底朝天,因而被拒絕入職/拒絕開戶/拒絕服務。
這並不是一個很遙遠的情境…
Tl;dr
解決交易隱私問題分為兩個層次,Assuming你的目的是讓自己的金錢流向無法被追蹤。
層次一:我的錢「丟進了」Tornado Cash的contract,我要如何在不使用與轉入時同一個address的情況下— 若是同一個address就沒有隱私可言了 — 取出我的錢?contract如何知道我存過錢,餘額還夠,所以現在我來領錢了他讓我領?
層次二:就算層次一成立,我的隱私如何達成?到底有多隱私?到底有多不隱私?
技術上來說(細節下文詳談),層次一使用zero-knowledge的set-membership proof來證明,透過預先在Merkle Tree中「登記」一個自己的entry/leaf,tornado cash稱為note,爾後在提款時提出該leaf之zk proof,來解決這個提款時的認證問題。
層次二則是所謂的藏樹於林。既然轉出和轉入無法被連結在一起,那麼只要使用Tornado Cash的人數夠多,總轉出和總轉入的交易總筆數就會太多,以致無法輕易重新關聯轉入與轉出地址背後的真人。
使用界面
https://tornado.cash/
當然你也可以直接和合約地址互動啦
上圖左方紅框為存入幣種與金額大小,右方紅框為該額度對應之帳戶內有多少顆「樹」。
記得藏樹於林嗎?右方的 Anonymity set 就是告訴你現在森林的規模有多大。數量一大,跑資料分析試圖重新關聯某筆特定存款到某筆特定提款就變得更為困難。
提款界面如上。
值得注意的是,提款時的以上兩個選項(Wallet/Relayer),是在目前Account Abstraction尚未實現時的一個折衷方案。
這裡有個死循環:既然我提款的時候需要支付gas,那麼我的gas從哪裡來?是不是勢必得從交易所或是其他帳號來?簡言之,若是無法直接新建立一個地址然後直接將其作為Tornado Cash提款用,達到的隱私強度就大打折扣。
Relayer就是針對這個問題所設計的。透過付出一些手續費來提供社群架設relayer node的誘因,提款時該筆轉帳的gas費用,便可以讓relayer node來負責先出。relayer node收到使用者的zk proof後將其轉交給tornado cash的合約,合約就會會將應有的relayer手續費與扣除手續費+gas後的款項分別轉給relayer與使用者。
社群治理
Tornado Cash天生是一個比較沒有銅臭味的專案 — 社群治理和funded的味道相當強烈。
透過預先設計好的proxy contract與staking/locking機制,任何一個Tornado Cash的使用者都能夠提出對合約實行的改動建議,並交由社群來投票決定是否要執行該改動。
技術細節可以參照此篇,同時Tornado Cash的第一輪社群治理提案也剛投票過關,回顧可參考此處之討論。
誘因設計
本文作者比較任性不在意錢,請移駕此處閱讀官方如何設計Anonymity Mining來確保以下兩點:
機制能讓使用者願意加入存錢,提供流動性同時也讓樹林變大,增加隱私程度。
產生TORN(ERC20 token)與領取TORN的機制,透過在原本的tornado cash上面再加一層,來避免TORN激勵層錯誤的設計導致下一層之隱私洩漏(激勵層出事不影響核心隱私之意)。
技術細節
首先本文不打算解釋何為zero-knowledge proof,請接受以下描述:
若有一NP statement分類上是satisfiability problem(例:merkle tree中的hash chaining H(H(H(a,b),c),d) ),則我們可以設計出一個arithmetic circuit來確保能夠有效率的產生proof, 有效率的驗證, 無法產生假的且能說服人的proof…且其電路驗證的statement是我們想要的,像是此例中的merkle tree opening.
存款
存款者透過送出C = H(k, r) 以及存入之數額給tornado cash的合約來進行存款的動作。其中k在之後會成為存款者領錢的憑證,稱為nullifier,r則是增加randomness而已,此二值需要記下。此時合約端會將這個C(commitment)丟入Merkle Tree上其中一個空的leaf,並更新root hash。存款者還需要記下自己的C對應之leaf index。
產生proof,用此proof作為提款憑證
用一段話來概括,若是我
知道Merkle Tree上某個leaf的commitment的preimage, 代表我能在電路中證明我知道H(k, r) 中的 k, r, 同時不洩漏k, r到底是多少(zk特性, magic)。
我知道該leaf至root的路徑上會經過哪些點,我也提供了一個可以讓電路驗證root hash的hash chaining過程,代表我知道他是從哪個leaf開始走的。因而,這證明了我提出的1.中的commitment確實屬於某顆公開的、大家都知道的merkle tree中的特定leaf(就是我之前存款對應到的leaf)。
就可以在不需要提供像是原本存款地址的簽章之類的驗證機制情況下,透過zk proof,亦能正確做permission control讓unlinkable的提款能夠成真。
另,讀者可以看到在proof中已然預設了relayer的存在。這使得上開所提到之「使用者提款, 拜託relayer執行=>relayer預付gas發起transaction,將內容送給tornado cash合約=>合約處理proof並將款項拆成兩份給relayer與使用者」這個行為得以成立,且relayer無法得知或假造proof內容。
提款流程
基本上在上方的產生證明都講過一次了,這邊就是pseudo code順過一次提款流程而已,大家自己看啊。
值得一提的是,使用者除了需要提出上一部分提到的證明之外,還需要將k的部分額外拿出來再做一次H(k),將值一併傳給contract。
這裡的設計哲學,簡單來講是這樣的:zero-knowledge太強了,強到就算證明了我知道H(k, r)的k跟r, 收到的驗證者並沒有辦法知道H(k)是什麼東西。為了讓同一筆款項不會被提領兩次,在提款流程中合約會將「每一筆成功提款中的H(k)」記錄下來,另外開個表存著。爾後若是其他提款交易中的H(k)與表中的重複了,這就代表有人試圖想要騙合約重複提款,自然該提款嘗試就不會成立。
洗錢失敗例
工程師都知道使用者從來不看說明書,看了可能也不會懂。
Koh Wei Jie分析了Kucoin的駭客事件。Kucoin的駭客使用Tornado Cash來洗錢,但忽略了Tornado Cash官方一直三令五申的使用需知,因而讓款項在進入Tornado Cash跑了一輪之後還是能夠被追蹤,哈哈UCCU。
簡單來說,hacker為了節省多次使用relayer的手續費,而將大多數的提領過程都變成直接提領到wallet。雖然該wallet的位置是全新產生的沒有gas,但是透過只讓第一次的提款使用relayer,hacker便能從第一次提款中取得手續費並分發給其他全新產生的wallet address。
那問題在哪?還要問?
要達到隱私需要保持藏樹於林原則,同時使用者不應自己破壞tornado cash幫你達成的address unlinkability。這位hacker因為愛省手續費,所以違背了後者;同時他因為太心急又愛省手續費,太快、分太少次提領、每次提領的數額又太大了,所以side-channel去給他做簡單的traffic analysis就能夠用虛無假設推出:「綜觀歷史上所有的存款位置與數額,扣掉駭客存錢的那些位址之後,我們還需要14個unique address/user共謀,才能有能力一次提這麼多錢。」
這看起來可能嗎?自然是不可能的。
所以這位駭客就是錯誤的沒有遵守藏樹於林的原則,才導致自己的金流重新被和帳號聯繫在一起。
提供一些延伸閱讀,圈子內的”名人”對這種不看說明書的使用者的看法:
tornado * Gavin Andresen
如何避免洗錢失敗
我自己的投影片,我自己翻譯:
打開你的VPN 打開你的TOR 打開你的無痕瀏覽器分頁 用上你全新的VM PC VPS instance 最好連data-link layer安全都顧到 產生全新的地址不要懶惰 自己跑一個fullnode 乖乖用relayer付手續費提款 領錢之後記得把C(k,r)的記錄刪掉 不要急一次存或提領大額 時間拉長數目減少…..
簡而言之:要設計相對安全但又讓使用者可以直覺上手的安全系統真的很他媽難 - 使用者永遠會想辦法抄近路,然後系統的security assumption就爆炸了。
結論上來講,你想要多安全取決於你在臺大水源校區的腳踏車平常都上幾個大鎖=想付出多少成本。只要不要學Kucoin Hacker那樣連鎖都不鎖車還是新的,大部分時間都沒啥問題 lol。
參考資料與文中出現過的連結,不按先後順序:
https://tornado.cash/Tornado.cash_whitepaper_v1.4.pdf
https://tornado.cash/audits/TornadoCash_cryptographic_review_ABDK.pdf
https://tornado.cash/audits/TornadoCash_circuit_audit_ABDK.pdf
https://torn.community/t/whats-next-for-tornado-cash-governance/250
https://weijiek.medium.com/deanonymising-the-kucoin-hacker-418fa5e9911d
https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703#2084
https://eips.ethereum.org/EIPS/eip-2938
http://gavinandresen.ninja/private-thoughts
[ZKP 讀書會] Tornado Cash was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「reference check流程」的推薦目錄:
- 關於reference check流程 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於reference check流程 在 生涯設計師-邱彥霖Sandy Facebook 的最佳解答
- 關於reference check流程 在 台灣空姐姍姍的旅遊和廣東話閒聊 Facebook 的最讚貼文
- 關於reference check流程 在 コバにゃんチャンネル Youtube 的最佳解答
- 關於reference check流程 在 大象中醫 Youtube 的最佳解答
- 關於reference check流程 在 大象中醫 Youtube 的精選貼文
- 關於reference check流程 在 [問題] Reference Check 流程- 看板Salary - 批踢踢實業坊 的評價
- 關於reference check流程 在 請問人資大大照會的流程- 工作板 - Dcard 的評價
- 關於reference check流程 在 背景調查Reference Check 查什麼?要怎過| 方丈求職系列PP10 ... 的評價
- 關於reference check流程 在 HR小薯蓉- 《Reference Check後,如何處理虛假證明?》... 的評價
- 關於reference check流程 在 reference check沒過2023-精選在臉書/Facebook/Dcard上的 ... 的評價
- 關於reference check流程 在 reference check沒過2023-精選在臉書/Facebook/Dcard上的 ... 的評價
- 關於reference check流程 在 [問題] Reference Check 流程 - PTT 熱門文章Hito 的評價
- 關於reference check流程 在 [問題] Reference Check 流程- 看板Salary - Mo PTT 鄉公所 的評價
- 關於reference check流程 在 Re: [請益] 和碩面試完,核薪時間? KouChan PTT批踢踢實業坊 的評價
- 關於reference check流程 在 Re: [問題] 我真的很討厭reference check - 看板Salary 的評價
reference check流程 在 生涯設計師-邱彥霖Sandy Facebook 的最佳解答
#提前兩個月提離職好嗎?
我偶爾會遇到為公司著想而想提早很多時間提離職的人。這是什麼意思呢?就是,法律規定離職預告期最長30天,但有人因為公司內規、擔心公司找不到人、不想手上的任務沒做完落人口舌或打壞關係等,而提前兩個月甚至更久前預告離職。這些看似貼心,為公司為同仁著想的舉動,真的好嗎?
所有的職涯問題,都沒有簡單的答案。
我常常說情、理、法,若情感上你願意等對方找到人再離開,看似沒有什麼問題;只是對方是否還能一如往常對待你,這是無法預料與決定的,更別自以為的貼心,對方會因此感動涕零。因為能夠好聚好散的前提,是在雙方平時就真心實意的相處,坦誠以待的溝通,知道彼此的需求與困難,協調出雙方都能接受的方式。但是一個人決定離職,大多與人有關,像是組織文化、主管風格、同事相處等原因;溝通相處都有問題了,那最佳的選擇就是先照規矩,而非顧心情。
離職對雙方都是壓力,就跟談分手一樣。
就跟提分手一樣,不論是提的還是被提的,第一時間彼此壓力都很大,很難沒有情緒。試想,面對一個心已經不在自己身上的情人,留他是因為愛(需要),但若對方擺明不愛(不需要)了,是要放他走還是硬留?硬留下來了,還要戰戰兢兢的相處,深怕對方又想離開。放在職場,這個時候是要要求還是不要求,做不好可不可以講?工作可否交代?這些心理,反倒會消磨彼此的信任感。後續,依然要走的話,就容易由愛生恨,那才是真正的痛苦。放在職場,故意漠視事小,可能還會出現刻意刁難或言語攻擊等行為;此時若是感情分手,還可以一走了之,職場分手還要慢慢等到離職那天。
離職,心理因素才是我們真正要關注的。
最難處理的永遠是人心,所以有句話「長痛不如短痛」,放在分手或離職都很適用。因為,時間拖得越長,情緒就越難掌控,風險也就越高。既然要走,就用對的態度(堅定與感恩的心)、做該做的事(流程規範),把任務做好交接,確保接任的同仁可以銜接。只要過程自己的部分沒有瑕疵,未來在面試時自然坦蕩蕩。當然,若你提離職只是為了要談判,那就是另外一回事了,只是我從來都不推薦將離職作為談判的籌碼。
想要獲得好的評價,平時就要經營人際。
會想要更早的預告離職,很多時候也是為了能獲得「好評價」。當下一間公司要做資歷查核(Reference check),可以獲得好的評語。但其實,真正的評價是是平時就要盡量和同事、主管保持良好關係,也要趁早培養個人職涯上的「重要關係人」,若是平時就不經營職場人際,就算提前半年離職也不會有太大幫助。
結論,法律規定離職預告期最長就是30天,有些公司內規會要求兩個月三個月,這些都不合法。不論是找人接任或招募新員工,是企業的責任;將工作清單列好,資料整理好,讓下一個接任的人好上手是自己的責任。除非你有其他的考量,不然滿三年以上就是30天,真想幫忙,可以離職後用約聘或工讀的方式,降低陣痛感,讓雙方保持合作的彈性。
reference check流程 在 台灣空姐姍姍的旅遊和廣東話閒聊 Facebook 的最讚貼文
<<姍姍示範常見 面試問題 - 面試空服員的回答>>
Q : Where do you see yourself in five years ?
Sample answer for the flight attendant final interview :
“My goal right now is to be a flight attendant at a visionary airline where I can grow and take on new challenges over time. Ultimately, I’d like to assume more management responsibilities and probably get involved in other functions within the company. But most importantly, I want to work for an airline where I can build a flying career.”
---
The above question is one of the most popular in a job interview. Do not just “COPY & PASTE” the answer. Take it as a reference and make it your own version.
既然我都寫出來了, 一定會有不少人照抄。之前我的示範履歷一po完,來找我上課的學員,CV格式、甚至部分內容都直接照抄。大家都照抄就不好玩了,以上面作參考範本,加以修改變成你自己的答案吧。
---
In a flight attendant recruitment event, before you are able to take the 1-on-2 final interview, you need to successfully go through the Open Day & the Assessment Day
在航空公司空服員的招募中,在能夠進入最後一關1對2面試前,你需要先通過Open Day & Assessment Day兩大關。為此,以中東航空公司為目標的你,即將有機會體驗前面兩大關👇👇👇
<
~~ 2017年11月 卡達航空空服員OD & AD 流程 擬真MOCK-UP~~
11月即將在台中、台北各辦一場卡達航空OD、AD模擬,讓你一次體驗整個招募到底是怎麼回事。全程不刪人,但我會作評分。活動結束進入集體講評時間,最後會留點時間,請各位對當天的參加者作出以你們同為面試者為出發點的建議,最後發放個人評分表給你。當天服儀及所需攜帶文件比照卡達官網規定。
台中場
地點:台中市北區忠明路及華興街交叉口附近,專業場地,地點將有大片落地窗,無敵台中景觀
日期:11月 18 號星期六 2:30-4:30 PM
費用:每人1300 + 分擔2小時場地費1300。所以越多人報名,每人負擔越少。
報名: 請透過專頁傳訊。11月9號晚上11點結束報名,11月12號下午5點前完成匯款
**若人數不足5位,將辦在台中火車站或台中市大里區的咖啡店,除學費外請自行負擔該店低消130元以內**
台北場
地點:小樹屋Treeful ( 台北車站、古亭站、科技大樓站其中一處 )
日期:11月 19 號星期天4:30-6:30 PM
費用:每人1300 + 分擔2小時場地費(未知,視人數決定訂得到的場地)
報名: 請透過專頁傳訊。11月9號 晚上11點結束報名,11月12號下午5點前完成匯款
**若人數不足5位,將辦在新北市我家,除學費外沒有低消,但請自備所需飲品等**
當天AD流程如下:
English Test + Essay Writing & Math Test
(First Elimination, not applicable on the day)
212 cm of arm reach test、Tattoos & Moles questions
Quick conversation… talk about the word written on the piece of paper that you choose from a pile
Check make-up & arms & legs、some questions about you
(Second Elimination, not applicable on the day)
Group Discussion
(Third Elimination, not applicable on the day)
(不不不歡迎新聞媒體轉錄,但歡迎「其他非屬新聞媒體」的個人及專頁轉載。所有文字圖像影片, 未經姍姍許可, 未註明出處擅自引用抄襲, 必定追訴法律責任。姍姍的家人擔任檢察官,請勿以身試法)
photo: Qatar Airways Facebook
reference check流程 在 コバにゃんチャンネル Youtube 的最佳解答
reference check流程 在 大象中醫 Youtube 的最佳解答
reference check流程 在 大象中醫 Youtube 的精選貼文
reference check流程 在 請問人資大大照會的流程- 工作板 - Dcard 的推薦與評價
最近在找新工作,HR要求要填寫前主管的聯絡電話,大家會留還是不會留?大概在哪個階段,會真的打去Reference check?那想問有公司會連面試都沒面試, ... ... <看更多>
reference check流程 在 背景調查Reference Check 查什麼?要怎過| 方丈求職系列PP10 ... 的推薦與評價
歡迎留言或在Facebook 和我聯絡哦! https://www.facebook.com/fongcheunghr/方丈Instagram: https://www.instagram.com/fongcheungh. ... <看更多>
reference check流程 在 [問題] Reference Check 流程- 看板Salary - 批踢踢實業坊 的推薦與評價
各位大大好
小弟最近去面試ㄧ家公司,有通過第一關
正在安排第二關面試時,卻收到人資已經有打去前公司確認資料,這點讓人覺的有點怪是
人資去做Reference check時並未事先通知,另外小弟也還沒去第二關面試,當然也沒有o
ffer
請問做Reference check是否應該要事先通知,不然前公司也會覺的蠻怪
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.34.123 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Salary/M.1635397446.A.E24.html
... <看更多>