📜 [專欄新文章] [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.
👏 歡迎轉載分享鼓掌
同時也有4部Youtube影片,追蹤數超過483的網紅Boris Foong,也在其Youtube影片中提到,#BorisFoong #RamseyWestwood #StellarRadio Brought to you by Boris Foong & Ramsey Westwood. Connect with Stellar Radio ▶ https://www.facebook.com/Ste...
「data leaf」的推薦目錄:
- 關於data leaf 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於data leaf 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於data leaf 在 喬的英文筆記 Joe's English Learning Notes Facebook 的最讚貼文
- 關於data leaf 在 Boris Foong Youtube 的最讚貼文
- 關於data leaf 在 Hock Chai's Flavours Talk 让味道说话 Youtube 的最佳貼文
- 關於data leaf 在 LEAF EVANS 小鹿 Youtube 的精選貼文
data leaf 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] Crosslink 2019 Taiwan|LibraBridge: 橋接 Libra 與 Ethereum
✍️ AndyLin
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
十月19–20日於台北矽谷會議中心舉行的 Crosslink 2019 Taiwan,由 Taipei Ethereum Meetup 合計共40多位志工協力舉辦,吸引了上百位來自全球的區塊鏈開發者社群齊聚。自從 Facebook 在今年六月公布 Libra 計劃之後,造成全球政府、金融機構以及區塊鏈產業的熱烈關注,其中也有許多區塊鏈開發者對於 Libra 的技術及應用產生很大的興趣。在19日上午其中一場演講由來自區塊鏈技術開發公司 AMIS 的軟體工程師 Bun Hsu,分享了其開發的專案「LibraBridge: 橋接 Libra 與 Ethereum」,透過實作 MVP 來實現 Libra 與 ETH 之間的 Swap 互換。
LibraBridge: 橋接 Libra 與 Ethereum — Bun Hsu(source: Crosslink 2019 Taiwan)
在演講的前半段,講者先介紹了在驗證 Libra 交易所需具備的基本知識;後半段則介紹其實作的 LibraBridge,並現場 demo。
一、驗證 Libra 交易
首先,先介紹驗證 Libra 交易需要具備的基本知識,包括 Merkle tree, transaction info 以及 transaction accumulator 等。區塊鏈網路中的 client node 分為 full node, light node, relay node,在這裡會著重在 light node 輕節點。輕節點不需擁有區塊鏈上所有的資料,只需透過 block header 中的 Merkle root 即可驗證交易。
接著介紹 Libra 的交易資訊,稱為 Transaction Information,主要分為 RawTransaction, SignedTransaction 以及 TransactionInfo 三部分,內容如下圖所示。
Libra Transaction Tree (source)
因為 Merkle root 的值在每次新節點加進來後都會改變,導致 Merkle tree 會不斷變大,因此,Libra 中的 transaction tree 被稱為 transaction accumulator。
Data stricture in the Libra protocol(source)
接著,講者以一個範例來說明上述內容。
從 gRPC client 收到交易後會顯示以下內容:
version: 44767signed_transaction { signed_txn: "..."}proof { ledger_info_to_transaction_info_proof { bitmap: 45055 non_default_siblings: "..." non_default_siblings: "..." non_default_siblings: "..." ... } transaction_info { signed_transaction_hash: "..." state_root_hash: "..." event_root_hash: "..." major_status: 4001 }}events { ...}
Version
每一個交易都有其唯一的版本號碼,也就是在 transaction accumulator 中 leaf node 的位置。以下圖為例,藍色節點的交易 version 為 4,二進制表示為 100,其中 0 表示向左,1 表示向右,因此我們可以從 root 出發,向右一次、向左兩次後找到此交易。此概念和 Plasma Cash 相似。
Transaction version(source)
bitmap & non_default_siblings
bitmap 表示哪個 siblings 為 default,1 表示 non-default;0 為 default。因為 transaction accumulator 會一直變大,大多數時間都不會是 full binary tree,因此,需要 default(placeholder) 來維持樹的結構。
bitmap & non_default_siblings(source)
transaction_info
交易的細節。其中,major_status: 4001 表示交易已被節點執行。而因為目前 Libra 不會消耗 gas,因此 gas_used 為 0 而未顯示。
在前半段演講結束前,講者也展示了用 Solidity 語言來驗證 Libra transaction Merkle proof 的程式碼。
Solidity snippet
而在後半段演講,講者先介紹了 LibraBridge 的應用場景。
二、透過可信任的第三方來執行 LIB-ETH 交換
目前要進行 Libra token 和 ETH 的交換,必須透過可信任的第三方來確保交易執行。舉例來說,假設參與方(使用者)擁有 Libra token,而託管方(MAX 交易所)有賣 ETH,參與方想要和託管方進行幣幣交換的方法為從 MAX 交易所入金 Libra 並與之交換 ETH,但前提是相信 MAX 交易所會如期出金,不會作惡。
但此時會有個問題產生:是否可在不完全信任託管方(MAX 交易所)的情況下來實現 LIB-ETH 的幣幣交換呢?
三、LibraBridge — Trustless custodian between Libra and Ethereum
在 LibraBridge 的實作中,藉由兩個 function 來實現無需託管信任的 LIB-ETH 幣幣交換:
Deposit:託管方傳送較多的 ETH 至合約中作為保證金。
Challenge:參與方可以質疑託管方是否實現承諾(在合約中驗證 Libra transaction Merkle proof)
以下分別討論正常情況及違約挑戰的情況:
Case 1: 正常情況
在正常的情況下,首先託管方會在合約中存入保證金,同時被鎖定直到一定時間後才能被託管方取回。而當使用者(參與方)想與託管方進行幣幣交換時,會先查詢合約上是否有足夠的保證金,若驗證通過,使用者將 Libra 代幣存入託管方,而當託管方確認後,則會傳送等值的 ETH 給使用者。
Case 1(source)
Case 2: 託管方違約
若託管方收到 Libra 後卻沒轉送 ETH 給使用者,則託管方即違約,使用者可以透過合約中的 Challenge 功能來執行違約挑戰,使用者可以出示 Libra 轉帳證明作為憑據,在驗證過 Libra transaction Merkle proof 後,合約上的押金(保證金)會被削減以歸還給使用者作為補償。
Case 2(source)
Demo
在演講的最後,講者也現場 demo 了 LibraBridge 的實作,有興趣的讀者也可以參考其官方錄製的 demo 影片。
而這場演講裡提到的內容,讀者也可參考 AMIS 的 Medium 文章及 github。
Crosslink 2019 Taiwan|LibraBridge: 橋接 Libra 與 Ethereum was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
data leaf 在 喬的英文筆記 Joe's English Learning Notes Facebook 的最讚貼文
喬近日在公司常看到下屬寫的英文書信不規則複數名詞完全搞不清楚,於是決定整理一篇不規則複數名詞分享:
【不規則名詞複數】
☛ analysis -> analyses 分析
☛ focus -> foci 焦點
☛ basis -> bases 基礎
☛ tooth -> teeth 牙齒
☛ leaf -> leaves 葉子
☛ crisis -> crises 危機
☛ index -> indices/indexes 指標
☛ foot -> feet 腳
☛ quiz -> quizzes 測驗
☛ person -> people 人
☛ child -> children 小孩
☛ mouse -> mice 老鼠
☛ louse -> lice 蝨子
☛ goose -> geese 鵝
☛ curriculum -> curricula 課程
☛ datum -> data 數據; 資料
☛ vita -> vitae 小傳記
☛ apex -> apices/apexes 頂點
☛ ox - oxen 牛
☛ diagnosis -> diagnoses 診斷
☛ emphasis -> emphases 強調
☛ oasis -> oases 綠洲
☛ parenthesis -> parentheses 插入語
☛ synopsis -> synopses 概要
☛ neurosis -> neuroses 神經官能症
☛ axis -> axes 軸
☛ automaton -> automata 自動機
☛ man -> men 男人
☛ thesis -> theses 論文
☛ alumnus -> alumni 校友
☛ stimulus -> stimuli 刺激
☛ octopus -> octopi/octopuses 章魚
☛ radius -> radii 半徑
☛ fungus -> fungi 真菌
☛ medium -> media 媒體
☛ bacterium -> bacteria 細菌
☛ memorandum -> memoranda 記錄
☛ criterion -> criteria 標準
☛ phenomenon -> phenomena 現象
☛ dice/die -> dice 骰子
☛ corpus -> corpora
☛ genus -> genera
【不規則名詞複數 - 單複數同型】
☛ fish -> fish 魚
☛ sheep -> sheep 綿羊
☛ swine -> swine 豬
☛ moose -> moose 麋
☛ deer -> deer 鹿
☛ cattle -> cattle 牛
☛ bison -> bison 北美野牛
☛ species -> species 物種
☛ corps -> corps 軍團
☛ cod -> cod 鱈魚
☛ offspring -> offspring 子孫
☛ trout -> trout 鱒魚
☛ barracks -> barracks 軍營
☛ crossroads -> crossroads 十字路口
☛ gallows -> gallows 絞架
☛ headquarters -> headquarters 總部
☛ means -> means 方法/手段
☛ series -> series 系列
☛ tuna -> tuna 金槍魚
☛ aircraft -> aircraft 飛機
--
✔ 喬的著作《我的第一本英文文法 國際學村出版》購買連結
博客來: https://bit.ly/38nOl5H
【喬的部落格網誌聊英文談職場/商務英文】
☛ Blogger: http://ohjoseph86.blogspot.com/
【快追蹤IG關注第一手更新與喬生活】
☛ Instagram: http://www.instagram.com/ohjoe86
【若是您願意贊助幫助喬創作更優質的內容,歡迎點擊下方連結贊助】
☛ https://p.ecpay.com.tw/E8145
data leaf 在 Boris Foong Youtube 的最讚貼文
#BorisFoong #RamseyWestwood #StellarRadio
Brought to you by Boris Foong & Ramsey Westwood.
Connect with Stellar Radio
▶ https://www.facebook.com/StellarRadioMusic
Listen to this week’s episode in audio?
▶ https://www.mixcloud.com/StellarRadio
Subscribe to Boris Foong's YouTube Channel via
▶ https://www.youtube.com/borisfoong
Connect with Boris Foong
▶ https://www.facebook.com/djborisfoong
Connect with Ramsey Westwood
▶ https://www.facebook.com/djramseywestwood
TRACKLIST:
00:00:00 Stellar Radio Intro
00:01:38 Mirrals – Fløa [AVA Deep]
00:04:42 Azure - Jordin Post [Anjunabeats]
00:08:18 Hold Me - Minus One [Flashover Recordings]
00:11:35 Welcome Home (Third Project Interpretation Remix) - 2sher & Chris De Seed [Phatbull]
00:14:08 Dark Desire - Autul [Red Eclipse Recordings]
00:17:57 Miss U - Vito V [Blk Leaf Recordings]
00:22:07 Let Go – Armin van Buuren & Tom Staar Feat. Josha Daniel [A State Of Trance]
00:27:00 Collin - Steve Brian [Euphonic Records]
00:31:00 Void - Otiot Feat. Lovlee [Anjunabeats]
LOOKING BACK:
00:35:34 You (Myon & Elevven Remix) - Gabriel & Dresden, Jan Burton [Anjunabeats]
SOUND OF TOMORROW:
00:40:17 Resonate - Giuseppe Ottaviani [Armind]
00:45:38 Horizon - Milad E & David Deere [Suanda Voice]
00:50:14 Eternal Sunshine - Marc Baz [AVA Recordings]
00:54:35 Ali - Bigtopo [Suanda Progressive]
00:58:52 Everlast - Rub!K [A State Of Trance]
01:01:29 Focus - LKX [Interplay]
01:04:20 Carousel (Nrgy Mix) - Adip Kiyoi & Christina Novelli [Suanda Music]
01:08:10 Epic - Steve Dekay [Who's Afraid Of 138?!]
CLASSIC PICK:
01:12:06 Velvet Moods (Native Remix) - Johan Gielen Pres. Abnea [Data Records]
01:16:44 Destiny - Jimmy Chou [Ava White]
01:20:54 Golden Hour - Ashley Wallbridge [We'll Be Ok]
01:24:33 Serenade - Robbie Seed & Caitlin Potter [Find Your Harmony]
01:28:48 Stellar Radio Outro
data leaf 在 Hock Chai's Flavours Talk 让味道说话 Youtube 的最佳貼文
Passions of Kerala @ Brown Garden,Gelugor
#bananaleaf #curry #indiancuisine #penangstreetfood
3 & 5, Lorong Endah 4, Taman Brown, 11700 Gelugor, Pulau Pinang
04-657 8550
1130 to300
6 to 10
https://maps.app.goo.gl/?link=https://www.google.com/maps/place//data%3D!4m2!3m1!1s0x304ac1a06971cd31:0x2a55fab230c49415?utm_source%3Dmstt_1&apn=com.google.android.apps.maps&afl=https://www.google.com/maps/place//data%3D!4m2!3m1!1s0x304ac1a06971cd31:0x2a55fab230c49415?utm_source%3Dmstt_1&ibi=com.google.Maps&ius=comgooglemapsurl&isi=585027354&ifl=https://www.google.com/maps/place//data%3D!4m2!3m1!1s0x304ac1a06971cd31:0x2a55fab230c49415?utm_source%3Dmstt_1
data leaf 在 LEAF EVANS 小鹿 Youtube 的精選貼文
今次第二十三畫是受身邊好友所委託,
回應TakDuck的請求畫佢最愛既Aikatsu!星夢學園。
今次既角色係有600歲既藤堂百合香Yurika!
作為Loli Gothic哥德蘿莉風格的偶像,以"百合香大人」自稱
吸血鬼美少女!超華麗既套裝...畫死小鹿.....XD
藤堂百合香小時候非常喜歡收集歐洲的古舊玩具,
並且收集了很多,經常生活在空想的實踐世界裡,
進入星光學院後,大家都光芒四射,更覺得自己什麼都不是,
在那個時候就遇上了哥特蘿莉的衣服,
因為迷戀吸血鬼戀人而辦成吸血鬼後裔,
希望穿上它粉絲能開心。
但因為被爆料是四眼素顏美少女而傷心,
但由於莓的幫助而重拾自信,演出也非常成功,
無論在什麼情況下都能保持吸血鬼這一角色不被破壞,有原則。
☆小鹿LEAF 的關鍵詞☆
漫畫家/淘寶/TaoBao/手繪漫畫/漫畫委託/香港/化妝師/美妝分享/MakeUp Tutorial/Anime Comic Manga/How To Darw Manga/零食分享/試食/味覺大挑戰/Hong Kong/Youtuber/每月大愛/無聊日常/Vlog HK/白猫/傳說對決/盧蜜亞
-----------------------------------------------------------------------
♞堕落凡间的天使 ♞ 小鹿子ジカ 著
內容:故事主角「美嘉●半人神」已經逃到凡間,
在「安德鲁.人類獵人」和「貓尾草.原素精靈」
們的協助下得到保護。但令一方面「卡栢烈.女戰神」
同樣逃到凡間尋找知己美嘉,「塞拉.天后」
亦不甘示弱派出更多追兵追捕二人。
兩位落難天使能否相遇?她們
又能否對抗【毒后JUNO】的追捕?
http://comic.ishangman.com/comic/2334...
__________________________________________
LEAF EVANS✸FOR MORE:
https://www.facebook.com/leafMUAC FACEBOOK
http://leafmuac.blogspot.com/ BLOG
http://instagram.com/leafevans INSTAGRAM
http://www.weibo.com/imleafevans WEIBO
https://twitter.com/LEAF_EVANS TWITTER
子ジカ✸MANGA ARTIST
https://www.facebook.com/littledeers FACEBOOK
Tak Duck Leung✸FOR MORE:
https://www.youtube.com/channel/UC7MPoWswt2hlHnAu50NxeRA