📜 [專欄新文章] Merkle Tree in JavaScript
✍️ Johnson
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
這篇文章會說明 Merkle Tree 的運作原理,以及解釋 Merkle Proofs 的用意,並以 JavaScript / TypeScript 簡單實作出來。
本文為 Tornado Cash 研究系列的 Part 1,本系列以 tornado-core 為教材,學習開發 ZKP 的應用,另兩篇為:
Part 2:ZKP 與智能合約的開發入門
Part 3:Tornado Cash 實例解析
Special thanks to C.C. Liang for review and enlightenment.
本文中實作的 Merkle Tree 是以 TypeScript 重寫的版本,原始版本為 tornado-core 以 JavaScript 實作而成,基本上大同小異。
Merkle Tree 的原理
在理解 Merkle Tree 之前,最基本的先備知識是 hash function,利用 hash 我們可以對資料進行雜湊,而雜湊後的值是不可逆的,假設我們要對 x 值做雜湊,就以 H(x) 來表示,更多內容可參考:
一次搞懂密碼學中的三兄弟 — Encode、Encrypt 跟 Hash
SHA256 Online
而所謂的 Merkle Tree 就是利用特定的 hash function,將一大批資料兩兩進行雜湊,最後產生一個最頂層的雜湊值 root。
當有一筆資料假設是const leaves = [A, B, C, D],我們就用function Hash(left, right),開始製作這顆樹,產生H(H(A) + H(B))與H(H(C) + H(D)),再將這兩個值再做一次 Hash 變成 H(H(H(A) + H(B)) + H(H(C) + H(D))),就會得到這批資料的唯一值,也就是 root。
本文中使用的命名如下:
root:Merkle Tree 最頂端的值,特色是只要底下的資料一有變動,root 值就會改變。
leaf:指單一個資料,如 H(A)。
levels:指樹的高度 (height),以上述 4 個資料的假設,製作出來的 levels 是 2,levels 通常會作為遞迴的次數。
leaves:指 Merkle Tree 上的所有資料,如上述例子中的 H(A), H(B), H(C), H(D)。leaves 的數量會決定樹的 levels,公式是 leaves.length == 2**levels,這段建議先想清楚!
node:指的是非 leaves 也非 root 的節點,或稱作 branch,如上述例子中的H(H(A) + H(B)) 和 H(H(C) + H(D))。
index:指某個 leaf 所在的位置,leaf = leaves[index],index 如果是偶數,leaf 一定在左邊,如果是奇數 leaf 一定在右邊。
Merkle Proofs
Merkle Proofs 的重點就是要證明資料有沒有在樹上。
如何證明?就是提供要證明的 leaf 以及其相對應的路徑 (path) ,經過計算後一旦能夠產生所需要的 root,就能證明這個 leaf 在這顆樹上。
因此這類要判斷資料有無在樹上的證明,類似的說法有:proving inclusion, proving existence, or proving membership。
這個 proof 的特點在於,我們只提供 leaf 和 path 就可以算出 root,而不需要提供所有的資料 (leaves) 去重新計算整顆 Merkle Tree。這讓我們在驗證資料有沒有在樹上時,不需要花費大量的計算時間,更棒的是,這讓我們只需要儲存 root 就好,而不需要儲存所有的資料。
在區塊鏈上,儲存資料的成本通常很高,也因此 Merkle Tree 的設計往往成為擴容上的重點。
我們知道 n 層的 Merkle Tree 可以存放 2**n 個葉子,以 Tornado Cash 的設計來說,他們設定 Merkle Tree 有 20 層,也就是一顆樹上會有 2**20 = 1048576 個葉子,而我們用一個 root 就代表了這 1048576 筆資料。
接續上段的例子,這顆 20 層的 Merkle Tree 所產生的 Proof ,其路徑 (path) 要從最底下的葉子 hash 幾次才能到達頂端的 root 呢?答案就是跟一棵樹的 levels 一樣,我們要驗證 Proof 所要遞迴的次數就會是 20 次。
在實作之前,我們先來看 MerkleTree 在 client 端是怎麼調用的,這有助於我們理解 Merkle Proofs 在做什麼。
基本上一個 proof 的場景會有兩個人:prover 與 verifier。
在給定一筆 leaves 的樹,必定產生一特定 root。prover 標示他的 leaf 在樹上的 index 等於 2,也就是 leaves[2] == 30,以此來產生一個 proof,這個 proof 的內容大致上會是這個樣子:
對 verifier 來說,他要驗證這個 proof,就是用裡面的 leaf 去一個一個與 pathElements 的值做 hash,上述就是 H('30', 40) 後得出 node,再 hash 一次 H('19786...', node) 於是就能得出這棵樹的 root。
重點來了,這麼做有什麼意義?它的巧思在於對 verifier 來說,他只需要儲存一個 root,由 prover 提交證明給他,經過計算後產生的 root 如果跟 verifier 儲存的 root 一樣,那就證明了 prover 所提供的資料確實存在於這個樹上。
而 verifier 若不透過 proof ,要驗證某個 leaf 是否存在於樹上,也可以把 leaves = [10, 20 ,leaf ,40]整筆資料拿去做 MerkleTree 的演算法跑一趟也能產生特定的 root。
但由 prover 先行計算後所提交的 proof,讓 verifier 不必儲存整批資料,也省去了大量的計算時間,即可做出某資料有無在 Merkle Tree 上的判斷。
Sparse Merkle Tree
上述能夠證明資料有無在樹上的 Merkle Proofs 是屬於標準的 Merkle Tree 的功能。但接下來我們要實作的是稍微不一樣的樹,叫做 Sparse Merkle Tree。
Sparse Merkle Tree 的特色在於除了 proving inclusion 之外,還可以 proving non-inclusion。也就是能夠證明某筆資料不在某個 index,例如 H(A) 不在 index 2 ,這是一般 Merkle Tree 沒辦法做到的。
而要做到 non-membership 的功能其實也不難,就是我們要在沒有資料的葉子裡補上 zero value,或是說 null 值。更多內容請參考:What’s a Sparse Merkle Tree。
實作細節
本節將完整的程式碼分成三個片段來解釋。
首先,這裡使用的 Hash Function 是 MiMC,主要是為了之後在 ZKP 專案上的效率考量,你可以替換成其他較常見的 hash function 例如 node.js 內建 crypto 的 sha256:
crypto.createHash("sha256").update(data.toString()).digest("hex");
這裡定義簡單的 Merkle Tree 介面有 root, proof, and insert。
首先我們必須先給定這顆樹的 levels,也就是樹的高度先決定好,樹所能容納的資料量也因此固定為 2**levels 筆資料,至於要不要有 defaultLeaves 則看創建 Merkle Tree 的 client 自行決定,如果有 defaultLeaves 的話,constructor 就會跑下方一大段計算,對 default 資料開始作 hash 去建立 Merkle Tree。
如果沒有 defaultLeaves,我們的樹也不會是空白的,因為這是顆 Sparse Merkle Tree,這裡使用 zeroValue 作為沒有填上資料的值,zeros 陣列會儲存不同 level 所應該使用的 zero value。假設我們已經填上第 0 筆與第 1 筆資料,要填上第 2 筆資料時,第 2 筆資料就要跟 zeros[0] 做 hash,第 2 筆放左邊, zero value 放右邊。
我們將所有的點不論是 leaf, node, root 都用標籤 (index) 標示,並以 key-value 的形式儲存在 storage 裡面。例如第 0 筆資料會是 0–0,第 1 筆會是 0–1,這兩個 hash 後的節點 (node) 會是 1–0。假設 levels 是 2,1–0 節點就要跟 1–1 節點做 hash,即可產出 root (2–0)。
後半部份的重點在於 proof,先把 proof 和 traverse 看懂,基本上就算是打通任督二脈了,之後有興趣再看 insert 和 update。
sibling 是指要和 current 一起 hashLeftRight 的值…也就是相鄰在兩旁的 leaf (or node)。
到這裡程式碼的部分就結束了。
最後,讓我們回到一開始 client 調用 merkleTree 的例子:
以及 proof 的內容:
前面略過了 proof 裡頭的 pathIndices,pathIndices 告訴你的是當前的 leaf (or node) 是要放在左邊,還是放在右邊,大概是這個樣子:
if (indices == 0) hash(A, B);if (indices == 1) hash(B, A);
有興趣的讀者可以實作 verify function 看看就會知道了!
原始碼
TypeScript from gist
JavaScript from tornado-core
參考
Merkle Proofs Explained
What’s a Sparse Merkle Tree?
延伸:Verkle Tree
Merkle Tree in JavaScript was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有4部Youtube影片,追蹤數超過6萬的網紅RiderAth,也在其Youtube影片中提到,上兩個星期和KJ兩個人皮癢打算駕我這輛NIssan Navara去越野+Camping,但是因為經驗不足整個超狼狽的啦~不止把外觀和interior弄到亂七八糟,carpet還被踩到全都是泥土,很難想像如果我是用那種maggie面carpet的話結果會多慘, 幸好在不久前換上了這套100%馬來西亞品...
「hex中之人」的推薦目錄:
- 關於hex中之人 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於hex中之人 在 柳廣成 Facebook 的精選貼文
- 關於hex中之人 在 一本好小說的誕生(拿起筆就能寫) Facebook 的精選貼文
- 關於hex中之人 在 RiderAth Youtube 的最佳解答
- 關於hex中之人 在 真電玩宅速配 Youtube 的最讚貼文
- 關於hex中之人 在 IrisDaily Youtube 的最讚貼文
- 關於hex中之人 在 【彩虹社EN】Hex對於談及自己的中之人資訊感到 ... - YouTube 的評價
- 關於hex中之人 在 我有說過我是亞洲女孩對吧』跟Hex分享幾次直播差點曝光中之 ... 的評價
- 關於hex中之人 在 【Hex Haywire】Hex會說中文嗎?為什麼出道影片有中文字幕 ... 的評價
- 關於hex中之人 在 [瓦特] 你虹EN新人hex抓馬真不少- 看板Marginalman - PTT網頁版 的評價
- 關於hex中之人 在 Hex海克斯分析 的評價
hex中之人 在 柳廣成 Facebook 的精選貼文
Day 2 笑什麼 你也是Sequential Art (上篇)
少時專心琢磨技藝,長大後發現創作者最需要克服的是既定認知、刻板印象。
_________________
在同一個媒介苦修打滾多時,自然而然會走出自己的軌道。但太過自我感覺良好地走在這條路軌上,就會只專注看著自己軌道的正前方,不經意放棄了觀看其他路軌的景色,甚至還以為那些景色根本沒什麼好看的。
我是個由漫畫出發了解藝術的人,所以今天容我從漫畫講起。
如 Day 1 所說,可能因為日本成長的緣故,自人生有記憶起,我就每天在看漫畫,尤其是少年Jump。隨著漸漸長大,我也變得喜歡解構集英社旗下的漫畫。什麼每頁平均5-7格分鏡、黑白色比例、玄幻打鬥漫畫的武器一定有劍、男女角色數目的比例等等。聽起來像是個專家。
那時全中大Fine Art Undergraduates只有我一個在畫漫畫,(江記黃照達等人都早就畢業了)心想,該沒什麼人challenge到我關於漫畫的認知吧。突然一句。
「喂,你覺得漫畫是什麼呀?」
聽起來多簡單的問題,我卻支吾以對地答辯著。
用「答辯」,是因為我發現自己不懂得回答,卻又不想被看穿。即使看著那提問者純粹出於好奇的誠懇臉色,那毫無敵意的請教,我還是選擇砌詞答辯。那刻即使真的成功說服了他,也讓我內心誤以為足夠堅牢的漫畫知識庫像國人玻璃心般輕聲敲碎。
隨著多年對漫畫漸漸深入的認知,鞏固下來的是對漫畫的既定認知。且這種既定認知在內心刻劃得愈深,就愈難以接受其他形式的漫畫,甚至拒絕理解,把不熟知的漫畫歸類為邪魔外道。
幸好我未算病入膏肓,仍能就自己對一種媒介輕妄、粗糙的觀念提出質疑。
然後我就認真地想「漫畫是什麼」。
我嘗試把視野拉遠來看。但一旦把視野拉寬,什麼影像藝術、動畫、舞蹈等等的,都映入視線。媽啊。我只是想思考漫畫是什麼。為什麼你們都走進來了?
「因為你剛才在想『漫畫是有序的圖像排列』啊」。
錄像 動畫 舞蹈 etc has joined the chat。
「我也是有序的圖像排列。」
「我們也是。」
「那我們都是漫畫囉?」
「不是吧。」
「為什麼不是?」
「那你們是何時開始出現分野的啊?」
「圖像排列的邏輯、媒介、方法。」
我嘗試扒開來看它們之間出現分區的界線。但發現界線很糢糊,糢糊得像是形容顏色的詞語,什麼「藍綠色」、「綠藍色」、「青色」、「鴨綠色」、「青玉色」、「綠松色」、「碧綠色」。但後者要定義區別,其實可以用光波長、Hex Color Code等賦予每個詞彙絕對且可量化的定義。可是,藝術媒介又可以嗎?或許硬要在藝術形式上找出絕對量化的定義並不可行,但透過思考媒介間微妙的區別及共享之處,就能更理解自己處理不同媒介時,腦袋究竟出現過怎樣的思維轉換。
於是,媒介之間的糢糊界線、未明之處,變成我覺得很有趣的地方。也開始在這些地方鑽起牛角尖,用另一種心態重新畫起漫畫來,還把一批Copic Marker,G筆頭擺進蘋果迷你倉封印起來(說起來,有人想要嗎?可dm我,還有很多哦)。
如果真的深究這道問題,需要大量實驗及閱讀經驗。於是就傾家蕩產買起書來。還記得,第一年受邀參展安古蘭國際漫畫節時,我花了10000多元港幣買了一個行李箱份量的書。因為那時覺得當地的書,錯過就沒了,因為我活在被港漫、英雄美漫、日漫當道的香港,生怕回來後就再也找不到這些書。所以當時的想法就是有殺錯無放過,要買下一眼間看不透是什麼東西的書,回港再慢慢研究。
_________________
以下將介紹我自己在一些作品的嘗試,以及不同藝術家的作品。
_________________
此Post第2、3、4張:Cube Escape Paradox (柳廣成)
_________________
我在腦海內的漫畫VS動畫之思辯:Frame Rate vs Panel
年少時買過漫畫化的寵物小精靈劇場版:《超夢夢的逆襲》、《利基亞爆誕》、《結晶塔的帝王》、《穿梭時空的相遇》。發現內文都是電影動畫幀格的截圖,排列成漫畫形式印作紙本漫畫書。後來我在想一個顯而易見但卻耐人尋味的問題:
是否把上述電影的Frame Rate 調至平均On 90(不是粗口哦),就看起來像漫畫了?
(得出on 90的根據:90分鐘電影有129,600幀(24FPS),用一頁漫畫平均7 Panel,一本書200頁的算法來算,129,600/(7x200)≈90)
影片需要高frame rate的原因之一是為了讓圖像連續變化、運動(播放)的速度而導致肉眼的視覺殘象產生的錯覺,而誤以為圖畫或物體(畫面)正在活動。漫畫的Panel間的提示因不需要考慮殘象運動錯覺的事實,令腦袋足以腦補Panel間的缺失即可。
自4年前畫起動畫後,我就在想如何把畫作的frame rate變得尷尬,慢得既不像動畫,快得又不像漫畫。於是在此書,就試試看了。動畫裏上一個幀格映入你的眼球後,就是下一個幀格的事了。上一幀格消失,下一幀格出現,如此輪替。但漫畫就是要所有畫面乖乖地印在紙上讓人一覽無遺。那不如讓onion skin更透徹些、延伸得更遠些幀格,全畫出來好了?(哈哈,literally OnionGhost)
在我這次作品上,我覺得漫畫可以玩的是發生於頁面上的圖像排列,不是輪流替換單一幀格畫面。但又可以應用在處理動畫會思考的事。
這時你可能會說,漫畫就非得是平面紙本不可了?
很好的提問。所以,下一個。
_________________
此Post第5、6、7張:Here(Richard Mcguire)
_________________
要在電子熒幕介紹這本書的魅力,恐怕有點難。因為Here作出的嘗試,是有意圖地讓漫畫書作為立體、具厚度的印刷品,如何藉其物理性與內文的空間感巧妙呼應。但它不是pop up立體書,因為它還是以完全平面的紙本製作而成,圖像的解讀仍然依賴平面紙張的表達。我說的立體,意思是指作者賦予書本在釘裝上的立體空間意義,令書本的釘裝不流於紙本書籍純粹的物理特徵。
Here是左揭書,封面是從外界視覺看到的屋子窗口,封底則同樣是從外界視覺看到的牆壁。內頁則是由屋內視覺向外看的景象。亦即,內頁左頁一定是向窗戶外看的,右頁一定是向牆壁看的。以90度角翻閱,就會構成封面、封底是屋外空間,內頁則是屋內空間。Here這本書的原則,就是空間上的視點是絕對不會改變的。
Here內文近300頁,透過漫畫鏡框再加標明的年份,由固定的視覺,持續變化的時間,交代這一空間發生過的人和事。
內文最初較在想像範圍內,就是屋內在數十年間換過不同的租客,有過長期租客,看著家人數目多了起來。還有數頁這樣的場景:在相隔甚遠的時間說過的各種話語,硬被漫畫的分鏡力量截下來,放在同一畫面。彼此間的語句本應毫無關聯,但卻因為漫畫的力量而被安排在同一空間重遇,使得兩者間的話語像在交談般。
後來,時間的尺度開始拉闊。時間延伸至房屋仍未被蓋起來的時代,剛好有個獵人經過,他射出的箭,剛好擦過漫畫內永恆不變的視點;還有城市化的經過、築屋的過程、工人等,都被這絕對不變的視點映下來。漫畫中後段還來到未來的時光、以及遙遠的過去:地球剛誕生,仍無大氣層之際,漫天星星、隕石的場景。
_________________
我發現自己寫太長了。要分兩天寫。明天會進入動畫世界多一點。
另外,介紹多點在漫畫媒介的既定語言、概念上大作發揮的藝術家及作品,可以google,還可以上網買買他們的書看:
(此Post第8、9、10張)
榮念曾 天天向上
Tobias Schalken Balthazar
Chris Ware (我推薦他所有書,算是Infographic x comics的始祖)
_________________
老實說,愈是探索,就愈不知道漫畫是什麼。但我樂在其中,如Day 1 所說,這並不是一種迷失的狀態,而是令我雀躍的事情。就像研究量子力學的物理學家般,發現在宏觀世界行得通的物理定律,在微觀世界卻莫明其妙地一一被推翻否定。量子力學像是有意識般地對你說,「再想清楚才嘗試定義『規則』吧。」
漫畫的全貌是什麼,就算是手塚治虫,我也不覺得他會知道。他也只是漫畫作為藝術形式的始祖發現者。像是物理學的…愛因斯坦吧。愛因斯坦發現了很多事,卻也帶著對量子力學的種種不解,歸入塵土了。不是他們渺小,而是世界太宏大了。
漫畫的世界還有什麼未被發現,其實真的還有很多人不想停留在已知的既定形式,貫徹實驗精神,務實地用創作探索著。就算眾人不一定關心,作品不一定出名。
動畫也是吧。
隨著在藝術的造藝及年齡的增長,就更得提醒自己要謙卑。
謙卑不是說在公眾形象上盡量以禮待人、說話盡量客氣謙遜,而是指對藝術保持謙卑。才能看得更清,藝術史的接龍遊戲才能玩得下去。於我而言,藝術是一種思考訓練,要對自己的創作時刻保持質疑,不能只苦修技藝,被自己畫作的視覺之美矇騙。
我覺得對藝術形式愈是Judgemental的人,他們對藝術媒介的既定認知就愈深,就愈需要否定,以捍衛他們內心對於藝術媒介片面的認知。因為如我經歷般,這種認知好歹也是用歲月建構出來的,就算被據理力爭地挑戰了,也會害怕信念失守,於是需要死守自己對世界的認知方式,才不會令長年建構出的自我搖搖欲墜。
Artist Statement 常見的語句「向____提出挑戰」雖有被濫用之嫌,但考慮適當的Context,其實本身的說法並沒有錯。
挑戰的就是我們自己對世界的認知。作品會證明某些認知是過時的,此時我們就得承認這些認知已不合時宜。而這種不合時宜,與今期流行什麼東西無大關聯,因其否定來自創作上實驗結果的推敲。經不起推敲的觀念就捨棄吧。若此觀念出自你心,就更需要虛心捨棄。
打了四小時字,發現打子4000字,見諒lol
下篇明天出!再會!
#onionghost #onionghosthk #動畫 #動畫推薦 #插畫 #illustration #animation #illustrationartists #animator #happynewyear #newyear #drawing #art #artist #pencil #comic #manga #bd #bandedessinee #柳廣成
hex中之人 在 一本好小說的誕生(拿起筆就能寫) Facebook 的精選貼文
【推理小說中,「不能說的秘密&不能說的名字」的地方型密室】
一般推理小說在設計密室時,不光只是設計密室而已,當然還會結合故事背景、人設個性,以及人際蛛網的揪心來完成整體的劇情。
那有一種推理小說的故事背景,無人脫逃的密室很特別,會建立在鄉村鎮里裡,並伴隨劇情推進,滿是鬼影幢幢和神蹟斑斑的事例。
不過謎團真相多數是(1)神鬼降臨,替天行道正義或單純降災示警與獻祭等,(2)看似神鬼事蹟,其實是人為心機的佈局,人心即怪物。
最末就是(3)以上皆是,混合穿插,交相逆轉,讓讀者覺得好亂@@但最後兜兜轉轉再來一記回馬槍,叫人意想不到,也出乎人意料。
例如三津田信三《如碆靈祭祀之物》和湯瑪斯・歐德・赫維特((Thomas Olde Heuvelt)《歡迎來到黑泉鎮》(HEX)這兩本就很強!
一個是祭祀&作祟交相混雜的怪奇物語,但懲善罰惡的方式卻怎麼類似連續犯案,還配給每個被害者有相同紀念品…讓人摸不著頭緒。
一個則是西方獵殺女巫色彩導致陰魂不散的黑泉鎮,女巫和鎮民們與時俱進,共同生活多少年,直到科技與青少年的躁動打破和平。
兩書某種程度下,在案發時刻都受困於這擁有某個特定傳說的鄉鎮村里「密室」,進得來,不一定出得去,但原因多因為想發大財~
且分別以在地碆靈大人&女巫傳說的怪談,抽絲剝繭過去的因果業障,犧牲獻祭所揭露,人心怪物誰為惡的真相,其實是人最可怕。
參考書目
三津田信三《如碆靈祭祀之物》,臺北:獨步文化,2020。
湯瑪斯・歐德・赫維特( Thomas Olde Heuvelt)《歡迎來到黑泉鎮》(HEX),臺北:臉譜,2020。
hex中之人 在 RiderAth Youtube 的最佳解答
上兩個星期和KJ兩個人皮癢打算駕我這輛NIssan Navara去越野+Camping,但是因為經驗不足整個超狼狽的啦~不止把外觀和interior弄到亂七八糟,carpet還被踩到全都是泥土,很難想像如果我是用那種maggie面carpet的話結果會多慘,
幸好在不久前換上了這套100%馬來西亞品牌Trapo的car mat,這套car mat非常容易安裝也很容易清洗~在拆裝的時候也一點都不費力,相信女生也很容易清洗~
大家如果喜歡Trapo的產品都可以通過下面的購買連結訂購喔~
⬇️⬇️⬇️
TRAPO Classic mark 2 :
https://invol.co/cl40yad
TRAPO Eco :
https://invol.co/cl40yb7
TRAPO Hex:
https://invol.co/cl40ybl
也別忘了使用我的優惠碼:Riderath10
10%的折扣優惠碼只有限量500份罷了喔~
大家趕快搶啊~~~
——————————————————————————————
現在RiderAth不止經營Youtube、Facebook和IG,還跨界經營起網絡商店喔~
下面是RiderAth Shopee官方網店和一些RiderAth嚴格挑選的好料產品,只要是在RiderAth官網裡的產品都將會是經過阿豪嚴格挑選並且使用後覺得CP指數很高的好料產品才會被上架喔~
Riderath官方shopee網店:
https://invol.co/cl2e9qz
⚠️RiderAth官方網店嚴選產品列表⚠️
Vanzo家用&車用香水:
https://invol.co/cl2bj2w
Vanzo車用香水:
https://invol.co/cl2e9ue
Narva LED bulb:
https://invol.co/cl2dwgs
Gaido Myvi lagi best Alternator:
https://invol.co/cl2e9t3
Hella cleantech Wiper Blade:
https://invol.co/cl2e9uo
Hella Premium 2 Wiper Blade:
https://invol.co/cl2e9v0
————————————————
Ath影片拍攝時使用的收音器材:
https://invol.co/cl1knrk
https://invol.co/cl1knqv
Ath影片拍攝時使用的相機:
https://invol.co/cl2e9w5
https://invol.co/cl1oeo4
Ath影片拍攝使用手機:
https://invol.co/cl1knt4
Ath外景拍攝時使用的對講機:
https://invol.co/cl1kq2r
Ath最愛使用的相機腳架:
https://invol.co/cl1knw5
Ath閣樓的Studio補光燈組:
https://invol.co/cl1knyj
Ath戶外拍攝使用的相機腰帶:
https://invol.co/cl1oew1
———————————————-
下面是我和Bojio傑哥在shopee網店售賣的看片神器!
都是經過我們的嚴格挑選的才進貨的電視盒,
請大家多多支持我們的網店喔~
必買看片神器!:
性價比之神,底配小雲SviCloud 3S電視盒購買連結:
https://invol.co/cl1kpzw
性能卓越價錢公道,中配小雲3plus電視盒購買連結:
https://invol.co/cl1kq16
超強性能旗艦款式,高配小雲3Pro電視盒購買連接:
https://invol.co/cl1kq1l
————————————————————
《後座椅背傾斜角度龍虎榜》
1-BMW 740Le (107°)
2-Honda Accord SV4. (106°)
3-Subaru Forester (105.5°)
4-Toyota Corolla Cross (105°)
4-Nissan Almera 2020 (105°)
4-Honda City fl (105°)
5-Mercedes benz A250 (104°)
6-Perodua Myvi 2 (103.3°)
7-Toyota Vios gen3 (103.1°)
8-Mazda CX 5 (102.5°)
9-Subaru XV 2 (102°)
9-Proton Saga vvt (102°)
10-perodua bezza 2020 (101.5°)
11-Perodua Myvi 3 (101.3°)
12-Proton wira aeroback (101°)
12-Hyundai Elantra 201 (101°)
13-Proton Persona 2019 (100.6°)
13-Proton Prevé (100.6°)
14-Borgward BX5 (100.1°)
14-Perodua Viva (100.1°)
15-McLaren 720S 前座 (100°)
16-Isuzu D-Max gen3 (99.9°)
17-Proton X50 (99.5°)
17-Toyota Yaris (99.5°)
17-Mazda 3 Sedan (99.5°)
18-Proton Iriz (99.2°)
19-Mazda 3 HB (99°)
19-Nissan Navara NP300(99°)
20-Honda HRV fl (98.7°)
21-Toyota Corolla 2019 (98.5°)
22-Toyota Hilux 2020 (97.5°)
23-Mazda CX30 (97.4°)
24-Proton X70 CKD (96.5°)
25-Perodua Axia (95.8°)
26-Perodua bezza (95.4°)
27-VW passat B8. (95°)
27-Perodua Kelisa (95°) (**with cushion)
阿豪ATH接受任何汽车或产品介绍或开箱的工作联系喔~
如果有人想借我你们自己的车或汽车产品又或者汽车服务拍视频的话也可以联系我喔~
Email:riderath1989@gmail.com
FB: https://www.facebook.com/RiderAth/
IG:https://instagram.com/riderath1989
#Trapo
#NissanNavara
#4x4OffRoad
![post-title](https://i.ytimg.com/vi/2dm21c9mAlQ/hqdefault.jpg)
hex中之人 在 真電玩宅速配 Youtube 的最讚貼文
電影《捍衛任務》系列以高超動作表現和爽快擊殺鏡頭,
在近期的動作片中佔有一席之地,電影的主角「John Wick」被稱為一代殺神,可謂人擋殺人佛擋殺佛,沒有任何人可以逃過他的狙殺,
而最新續集《捍衛任務3:全面開戰》也已經在台上映,
不僅如此以這部電影改編的全新遊戲《John Wick Hex》也公開了情報,
本作是一款快節奏的棋盤式戰略遊戲,在這黑色電影風格世界裡,
玩家要扮演愛狗人士「John Wick」體驗當殺神的快感,
遊戲更與電影創意團隊緊密合作,所有動作場面都精心設計,
完美呈現原作電影的精髓,遊戲中玩家必須快速決定每一個行動和攻擊,
更要考慮之後的代價,嘗試作為殺手的精準判斷能力,
PC版也確定由EPIC GAMES STORE獨佔,目前也開放預購囉,
喜歡這部電影的粉絲們可要好好期待啦!
(C)Bithell Games
(C)Good Shepherd Entertainment
「電玩宅速配」粉絲團:https://www.facebook.com/tvgamexpress
「美女愛玩Game」節目:http://bit.ly/1Qwt7S3
休閒平台:http://myfun.gamedb.com.tw
遊戲庫粉絲團:http://www.facebook.com/Gamedbfans
![post-title](https://i.ytimg.com/vi/dA8T74nWHuI/hqdefault.jpg)
hex中之人 在 IrisDaily Youtube 的最讚貼文
(正在上传视频结果我们这里地震了吓死我了)Hi大家好!!很抱歉好久没出视频了,其实这只视频很早之前就录制好了,但是最近一直没时间剪辑!今天终于剪出来啦!今天跟大家分享近期购买的7只很喜欢的包包❤️
本来觉得内容比较少,所以介绍的时候有介绍一些品牌的故事或者价格优势等等,结果没想到一个不小心录制了好多内容!!看到将近20分钟的视频别头痛!我把每只包包出现的时间都标注出来咯!
----------------------------------------------------------------------------------------------
【今天的我】
毛衣:UO https://rstyle.me/n/cwzzgtb593f 我穿s
特别喜欢这件,灯笼袖的钩花毛衣,黄色不显黑,是姜黄色!不过有点漏风,里面要穿一件打底~
来这里找我玩儿!
Instagram:https://www.instagram.com/irisdaily_/
Weibo: http://weibo.com/octopus2cs?is_all=1
对了~跟大家插播一个折扣!现在moda做活动:https://rstyle.me/n/cwzzd8b593f
满1000刀打75折!折扣码是【LNY250】
买boyy蛮划算的~大家可以去看看(我第四只介绍的包包就是boyy~优点缺点都有提到!大家如果想买的话可以先看看我的介绍~~)
----------------------------------------------------------------------------------------------
❤️00:46【第一只包包】 Celine 中号墨绿box皮
好喜欢这只!可惜还没有背着它搭配过,但是这个墨绿真的好美好美!信我!
这只我朋友在法国英国门店都看到了,所以应该还是很好买的!
【价格方面】欧洲真的美好太多了还能退税!
❤️05:00 【第二只包包】 Celine小号红色box皮
这只小号一开始买错了,买成酒红色了,结果我发现celine的酒红色好深。。。虽然也很美很好看,但是有点老气,我就换成了大红色!超级喜欢!
【购买方式】
这两只Celine的购买方式目前都只有官网,不过我看法国官网是可以直接在网上购买的~
欧洲的同学们好幸福!
❤️06:20 【第三只包包】 Sandro 中号的lou bag
官网:https://rstyle.me/n/cwzze4b593f 除了我那个拼色以外其他都全~
这里:https://rstyle.me/n/cwzzf4b593f 有我的这只拼色~价格也很低!不过只剩三只啦!
这里:https://rstyle.me/n/cwzzgfb593f 酒红色半价了只要190刀~
英国价格会美好一些~而且美国官网目前也没货
出了好久了我才买~这只包包的拼色真的很好搭配!
最近背了几次我发现了这只包包有个【缺点】会比较容易有划痕。
【我的搭配】
1.封面这套:
藏蓝色大衣:https://rstyle.me/n/cwzz2yb593f 现在折扣只需要70多刀~是羊毛的,质感真的不像平价大衣·。。
衬衫:everlane
内搭:theory
棒球帽:Aritzia (从球球那里偷来的~
❤️08:40 【第四只包包】BOYY Karl 24 Bag with Double Handle
我的这个颜色没了,双色手柄还有一款棕色,我觉得比我这个好搭配:https://rstyle.me/n/cwzzdab593f
现在moda做活动:https://rstyle.me/n/cwzzd8b593f 满1000刀打75折!折扣码是【LNY250】
买boyy蛮划算的~大家可以去看看
我就背过一次,总而言之还是挺美的,但是皮质比较硬,打开包包有点麻烦~
❤️12:20【第五只包包】 Proenza Schouler
Medium Hex Whipstitch Bucket Bag, Red Pattern
这里还有红黑拼色但是木有折扣了:https://rstyle.me/n/cwzzcrb593f
纯白色也非常好看:https://rstyle.me/n/cwzzc4b593f
这只水桶包很好装!虽然没怎么背它拍照但是最近几次我出去坐飞机都背这个!非常实用~暂时没发现什么缺点
❤️14:30【第六只包包】 Future Glory Co.
Rockwell Mini Bag
这里有黑色白色和大红色:https://rstyle.me/n/cwzzckb593f
大理石纹的也好看!很适合春夏我打算买一只:https://rstyle.me/n/cwzzb7b593f
这只包包是买手店朋友送我的:http://m.tb.cn/h.ZZR9e66?sm=e19e1f 不是广告,所以我在这里也要说一下它的【缺点】,包包内部的皮质不好,会掉皮屑,我拿这个包包拍照的时候就把贝雷帽放在里面不到十分钟,拿出来的时候上面已经有一些掉的绿色皮屑了~
除此之外还是一个不错的包包~
❤️16:45 【第七只包包】&Other Stories Nubuck Fold-Over Bag
购买方式:https://rstyle.me/n/cwzzb8b593f
大红色在打五折:https://rstyle.me/n/cwzzbvb593f
这个包包我是觉得搭配好玩买的,因为我没有这种灰绿的包包,这个包包官网写的材质是真皮,至于啥皮。。我也看不太出来,我暂时还没有背过~但是个人觉得很好装,而且软趴趴的摸着还是蛮舒服的
----------------------------------------------------------------------------------------------
❤️折扣码区❤️
Adornmonde:http://rstyle.me/n/ct3xikb593f 【8折码:IRIS20】
Pixiemarket:http://rstyle.me/n/ct3xhdb593f 【85折码:IRIS15】
----------------------------------------------------------------------------------------------------------------
剪辑:我
剪辑软件:premiere
相机:Canon 70D
外拍相机:Sony A7R2 我换了新镜头 35 1.4
This video is not sponsored, some links are affiliate.
![post-title](https://i.ytimg.com/vi/jh-XQqBhEVg/hqdefault.jpg)
hex中之人 在 我有說過我是亞洲女孩對吧』跟Hex分享幾次直播差點曝光中之 ... 的推薦與評價
![影片讀取中](/images/youtube.png)
【彩虹社EN】Enna :『我有說過我是亞洲女孩對吧』跟 Hex 分享幾次直播差點曝光 中之人 的事件讓謹慎的 Hex 聽得心驚膽戰【 Hex Haywire│Enna ... ... <看更多>
hex中之人 在 【Hex Haywire】Hex會說中文嗎?為什麼出道影片有中文字幕 ... 的推薦與評價
![影片讀取中](/images/youtube.png)
【 Hex Haywire】 Hex 會說中文嗎?為什麼出道影片有中文字幕?【彩虹社中英雙語】. ... <看更多>
hex中之人 在 【彩虹社EN】Hex對於談及自己的中之人資訊感到 ... - YouTube 的推薦與評價
【彩虹社EN】 Hex 對於談及自己的 中之人 資訊感到不自在不想聊自己的家鄉首次透露他是什麼民族人種並談到與觀眾相處的界線【 Hex Haywire】【Vtuber精華】. ... <看更多>