[爆卦]亂碼例子是什麼?優點缺點精華區懶人包

雖然這篇亂碼例子鄉民發文沒有被收入到精華區:在亂碼例子這個話題中,我們另外找到其它相關的精選爆讚文章

在 亂碼例子產品中有12篇Facebook貼文,粉絲數超過0的網紅,也在其Facebook貼文中提到, 如果只說「能有機會寫下這篇專訪的我,覺得非常開心」是有些不負責任。完稿之後,來往調整最多的是引句裡的用詞,什麼會讓一個人面臨危險,什麼會讓一個人身邊的人面臨危險;之間,又確實摻著「希望更多人看見」的心情。 ⠀ ⠀ 我常常覺得需要透過嚴格才能實踐的溫柔是不幸的,但終於有一天我需要選擇接受我們偶爾要被這...

 同時也有23部Youtube影片,追蹤數超過33萬的網紅陳彥婷Tiffany,也在其Youtube影片中提到,【⚠️不是業配!凡盜用影片者!一律走法律途徑!】 【⚠️網路上有很多亂碼帳號盜用影片並且要求線上付款,這完全是盜用跟詐騙喔!請小心不要被騙!】 【⚠️按摩店家是實體店面!沒有販售任何藥品!只有line預約時間到實體店體驗!】 👉🏻靠美胸按摩從A奶變C奶!臉部整骨一次見效? 你們敲碗的影片來了!...

  • 亂碼例子 在 Facebook 的最佳解答

    2021-08-13 19:19:25
    有 238 人按讚

    如果只說「能有機會寫下這篇專訪的我,覺得非常開心」是有些不負責任。完稿之後,來往調整最多的是引句裡的用詞,什麼會讓一個人面臨危險,什麼會讓一個人身邊的人面臨危險;之間,又確實摻著「希望更多人看見」的心情。


    我常常覺得需要透過嚴格才能實踐的溫柔是不幸的,但終於有一天我需要選擇接受我們偶爾要被這種嚴格所保護。世界容易用言語判決使用者的心意,忽略言語和立場之間還隔著動機。明眼人或許看出這篇專訪每一個小標都脫胎自一首詩,而詩是我和阿報說話之後第一個感覺。


    為什麼是詩?上好稿之後丟網頁連結給他,結果在訊息匣中點擊連結的時候跳出視窗:「网页存在安全风险,为维护绿色上网环境, 已停止访问」。意思是,這個世界將有許多人看不見這篇訪問吧?有些事情可以改成暗號,有些事情一旦改成暗號就再也不是原來的事情。什麼事情是前者,什麼事情絕對不能改變,我知道詩就是思索這件事情的事情,然而詩往往不能消滅問題。詩只能給我們面對問題的姿態。


    阿報給了我一種姿態。能有機會記錄這種姿態的我,覺得非常開心。


    ⋯⋯
    ⋯⋯


    ——— 这里是原来的『湾湾独立音乐速报』,现在的 @小岛音乐速报,主要发布台湾原创音乐、独立音乐新歌、MV、演出等等相关资讯,如果你也喜欢台湾音乐,欢迎关注我(愛心)


    點進小島音樂速報微博,第一眼看到的就是置頂文中這段自介。


    這介紹不到一百字,明眼人卻能看出端倪。2020 年 11 月 21 日,當屆金馬獎頒獎典禮隨主席李安步上星光大道揭序,這是中國全面撤出金馬的第二年,這邊觀眾習慣入圍名單裡不見中國作品的同時,那邊觀眾大概也習慣了轉播這檔事檯面上是看不見了。那晚,灣灣獨立音樂速報同步圖文轉播得獎動態,幾則發文都被新浪下架。速報頁面隨後出現一則新貼文,大意是對待一個頒獎禮,封殺到這般地步,真的至於嗎?


    那則新貼文當晚即在微博遭到圍攻,相關博主及眾多網民紛紛開始舉報,認為他的微博名稱夾帶私貨;數天後,他甚至收到了新浪站台要求改名否則對帳號進行官方處理的私訊。


    消息一出,三年來受灣灣獨立速報的資訊餵養、三十多萬追蹤者中,不少人挺身而出。有人是承著自己在這裡認識數不清台灣好音樂的情,有人是見得區區頒獎轉播被動刀的不平。這抗議竟真傳到新浪某位高管耳中,高管點了頭,不對這個匯集無數樂迷的站台下手。


    然而一週後,灣灣獨立音樂速報的名字依舊被改成亂碼。


    介紹寫「原來的」,是因這回終究不敵壓力,「灣灣獨立音樂速報」這個自 2017 年開站時就使用的名字,改姓成了小島。而之所以短短八十字裡「獨立音樂」、「原創音樂」並用,起因仍是「台灣」後面不能接「獨立」的潛規:


    「你要跟他們解釋斷句是 台灣 獨立音樂,要找你碴的還是找,後來很多媒體省麻煩,就用了原創音樂這個詞。」原創音樂,使用時概念幾乎等於獨立音樂,為避文字獄而衍的新名目,到頭來簡介卻還得反過頭把這詞給列上才完整。


    眼前螢幕裡的男子,唸「誰」的時候聽起來是「ㄕㄨㄟˊ」,說「年」的時候聽起來是「連」。他是原來的灣灣獨立音樂速報、現在的小島音樂速報始終唯一的經營者,更常把自己稱作編輯。熟的人都叫他阿報。



    ▍天線給了我天線的耳朵


    2021 年 4 月,阿報在自己的微信公眾號「聽見對岸」發表了〈台灣「獨立音樂」簡史〉。現在,你知道為什麼獨立音樂四個字要加引號了。


    該文從台灣的熱門音樂時期開始,順著解嚴後地下音樂萌芽、再轉化為如今獨立音樂概念的過程,約三十多年的歷史進行爬梳。文章一發,台灣社群上轉發者眾,除了史料本身激起的興趣,多少還有「這主題的文章出自中國人手筆」的詫異。


    這不是阿報第一篇掀起討論的寫作。2019 年,他在〈年終總結之現場篇〉一文中,統計該年度有多少台灣樂團到中國演出,得出「台團批量上大陸」的結論,數據被報導者〈那些席捲亞洲的台式浪子與浪漫──獨立樂團唱出厭世代的微抵抗〉一文採酌;2020 年 6 月,緊跟當年台灣文化部補助名單公佈,阿報另一篇文〈在台團熱潮背後,了解下台灣的音樂補助是怎麼一回事〉,則向中國聽眾說明台灣音樂圈習以為常的制度,「音樂補助是大陸沒有的嘛,對於大陸很多網友來說,政府居然發錢給樂團做音樂,他們想都不敢想。」


    不過,每篇長文末,總會導回小島音樂速報微博,「那裡比較熱鬧」。原有正職工作的阿報,寫長文是一年只幾次的事情,「聽見對岸」被他稱為年更號,比起小島音樂速報多時一天近十則台灣音樂情報的頻率,寫這樣有學究精神的論述,不是阿報最想做的事。


    1992 年,他在福建出生。因為當地方言與台語高度相似,少年時期的阿報完全聽得懂電視上五月天唱的台語歌是什麼意思。阿報口音裡那份熟悉咬字,也原來是連上了我們對台灣國語的印象。


    為什麼福建電視上有五月天?原因之一,是那個台灣音樂仍在中國舉足輕重的年代。阿報回憶 2006 到 2010 年間,身邊的人聽的是五月天、F.I.R. ,唱片行裡賣的是陳綺貞。


    另一個原因乍聽有點玄,想想卻有道理:「就,我們家的電視天線,那時候收得到台灣電視的訊號。我可以看中視看台視看華視,我記得這三個電視台最主要⋯⋯」不對、先等一下,這合理嗎?


    「不是,我們離金門很近你知道嗎?那個電視信號到福建都清楚,大概就和廣東那邊常看到香港的電視是一樣的。」


    青春期的阿報和家人搶遙控器,想看的是台灣樂團上節目打歌、廣告間的新曲 MV。為什麼想看?他說新世紀之初五月天《搖滾本事》演唱會,是自己第一次在螢幕上看見樂手操著樂器,有鼓、有吉他的舞台。


    因為帥吧,阿報說。就像許多少年少女。


    他要到二十多歲時,才發現台灣所謂「聽團仔」不少已把五月天劃到商業樂團的那一邊,這一點和阿報身邊的中國樂迷不同。包含阿報自己,至今都還對五團抱著當年獨立音樂啟蒙的好感。新世紀第一個十年沒有社群、自媒體,阿報心中的台灣音樂地圖描製除了電視,靠的是蝦米音樂和豆瓣兩大平台的音樂導介。


    「以前只知道五月天陳綺貞這種大名字,什麼絲襪小姐,什麼女孩與機器人、法蘭黛、先知瑪莉,都是因為蝦米音樂的推薦機制做得很好,我才知道的。」


    今年辭去工作回到福建的阿報,電視台不再收到台灣訊號。養成他品味的蝦米音樂,也在今年二月終止營運了。


    其實,誰還看電視呢?中國的唱片行一樣在倒,台灣音樂的影響力也在中國漸弱。少年阿報上了大學,那時躺在宿舍床上聽癡了的透明雜誌、甜梅號、回聲樂團,至今還是他的最愛,彷彿有什麼停在那裡。



    ▍你看團時很近


    從速報發文消息之速、簡史鑽研之執著,很難想像阿報本人只來過台灣兩次。2018 年,回聲樂團休團後睽違兩年重聚《巴士底之日十週年》演出,26 歲的阿報心想,是時候了。


    18 歲的阿報,大學上的是物理系,一入學就加入吉他社。「這邊的吉他社,相當於台灣的熱音社,是玩樂團、搖滾那種的。」社團裡都是音樂同好,只不過大家聽的多是中國搖滾,痛仰樂隊、萬能青年旅店,聽台灣樂團的有但不是很多。阿報只能靠著網路來尋找台樂同夥。


    「一開始都是打關鍵字,比如你在微博搜個安溥,搜到很多博文,那基本上提到的人都是喜歡安溥的,你就循著這些內容認識一些網友這樣。」


    有了點和線,總會想到面。微博上,阿報找得到日本音樂速報,找得到英國音樂速報,就是沒有台灣。


    然而,他並沒有立刻著手一個以台灣音樂為主題的自媒體。他最早創的是一個發表「洋蔥新聞」的站台。


    洋蔥新聞語出美國一家生產諷刺新聞的媒體「The Onion」,後來詞彙延伸用於描述基於嘲弄目的所生產的新聞,多少包含造假和誇張的成份。阿報以音樂為題,寫了幾篇洋蔥,覺得沒意思。


    「很多所謂音樂媒體,也就跟內容農場一樣,它可能是一些亂七八糟的文章,我想說沒有一個比較正規的音樂媒體來說一些事情,就覺得可以往這方面努力一下。原來那個號比較搞笑,寫了幾篇之後就放掉了。」


    2017 年 10 月,阿報滿志躊躇,下定了決心。站台名字,他早在註冊前就擬好:台灣獨立音樂速報。他沒想到申請第一關就被系統自動拒絕,原因是「台灣獨立」不能使用。


    「靠,我完全沒想到這件事吔!那時我很急,想說哇靠那怎麼辦,我要改什麼名字,一下子也沒有什麼好的想法,就想那把『台灣』改成『灣灣』好了,結果就這樣註冊下來。」


    誰能逆料灣灣獨立這名字也只撐了三年。


    隔年,他循自由行買好了機票,回聲演唱會的票約在台灣面交。第一次到台灣,一切新鮮,和合購門票的台灣歌迷一起排隊時,連坐下也讓阿報震驚。


    「我們在這邊排隊都是站著的,因為我們覺得說地板可能比較不乾淨。那個台灣樂迷就拉我說你要不要坐著、要坐著嗎?我還猶豫了。」


    還有許多。比方他和那人聊起自己當年在上海看了四十幾場演出,那人竟回「所以,上海那邊是只有台灣樂團可以看嗎?」比方他提起法蘭黛,那人竟回:「沒聽過欸,誰啊?」


    訪問時我向阿報嚴正澄清,上述行徑可能屬於該名歌迷的個人問題,從中倒仍延伸探討不少觀察:阿報直言,相對於他身邊的中國樂迷對台灣樂團的認識,台灣樂迷對中國獨立音樂的了解在他看來確實遜之;此外,台灣聽眾的分眾程度也更高:


    「我問他頑童是不是在這裡很紅,他說對,但那是聽說唱的人在聽的,他們是聽團仔,不怎麼聽頑童。但對我來說不是這樣,我聽台灣音樂不管你說唱還是搖滾還是什麼東西,只要是台灣音樂我都聽。反而在台灣,你們好像有分聽團仔是聽團仔,然後說唱仔是說唱仔?」


    我沒告訴阿報,這群人在台灣更常被叫做嘻哈仔。


    幸好這趟台灣之旅的經驗不只有距離。走進 Legacy,阿報在台前熾熱,意外發現台灣歌迷比中國聽團仔冷靜太多,「特別像北京這類的搖滾重地,或者迷笛這樣的音樂節,在大陸聽現場大家是狂叫狂撞的,歌與歌之間會問樂手等等晚餐要吃啥,」在中國,衝撞喚作「POGO」,音樂節若辦在一片草地,演出結束後大家會站在一片泥地上,「我覺得台下大家好安靜啊,我在大陸是最冷靜的,在這裡變成最熱情的。」


    「然後柏蒼在台上問說『你們是從哪裡來的?有沒有人從新竹來?有沒有從桃園來的啊?』我就看說怎麼沒人舉手啊?在大陸假如台上喊到哪個地名,肯定就很多人舉手比大聲的。忽然心血一來,柏蒼問完一輪我就超大聲喊:我是從上海來的!!!」


    他說,柏蒼嚇到了。那瞬間的阿報和身邊的人多不一樣,卻又多麼近。



    ▍為了避免開始


    對聽團仔而言最幸福的事,或許就是待在音樂的世界裡。然而,現實是世界上永遠有音樂之外的事。


    隨著社群趨勢,音樂人及其團隊也發展自媒體,將聲量與話語權從傳統媒體握回手心。對經營速報的阿報而言這一則以喜,他可以藉由翻牆使用 Facebook、Instagram 等社群追蹤音樂人,即時獲得新訊。阿報樂於在社群上追蹤台灣的樂評、音樂媒體,同時也信奉人肉推薦勝過音樂播放平台演算法。樂評在媒體的撰述、音樂人在社群上的互粉互推,對還有正職時一天頂多花一到兩小時整理速報題材的阿報而言,是重要的參考依據。


    一則以憂,是中國對社群的管制再加上兩岸箭弦的繃緊,讓音樂圈裡的人常常彷彿是即將射出的箭。


    「以前沒有社群,很多事情是大家都不知道。那現在,大陸樂迷如果平常不會翻牆的話,可能並不會特別清楚台灣樂團在一些政治或者社會議題上的表態,結果就造成一些認知分裂的情況。例如前幾年,脆弱少女組在社群上發佈了台獨相關言論,消息鬧大之後很多大陸歌迷就哇啊脫粉啊,因為他們原本聽這個團的音樂,感覺就是清新啊可愛啊,不會想到政治立場是對立的。反而是和我一樣常翻牆的人,很多事情早就知道了,反應沒這麼激烈。」


    敏感的也不只對方。2019 年,台北市長柯文哲現身杜鵑花音樂節,上台獻唱音樂節主題曲,身後是傷心欲絕的官靖剛和美秀集團的劉修齊拿著吉他伴奏。阿報當天把影片上傳速報,後來卻看到劉修齊在 Facebook 上表示阿報只因他個人參與活動就把樂團的名字和柯文哲放在一起,會給人不好的聯想。


    「我那個時候真的完全不懂台灣的政治你知道嗎?我想你一個市長出來講話,你樂手彈琴,這個有什麼啊?我完全無法理解。後來才知道台灣人對這個很敏感。」社群催化動輒炎上,但真正刺激神經警醒的仍是政治。兩岸情勢一動一靜,小島音樂速報信箱裡的檢舉信頻率可以說是地震儀了。早前因新疆棉事件,一系列藝人紛紛與品牌解約,事情鬧得沸沸揚揚,甚至有網民統計解約與沒解約的藝人名單,留言催促藝人解約,阿報發文表示希望藝人不需要被逼迫表態立場,隨即遭舉報禁言三十天;平素裡,發佈拍謝少年、盧廣仲新歌訊,總有人傳訊「台獨藝人的歌不要發了」,數量多寡而已。


    網路外的世界,阿報也並不快樂。音樂推廣工作,在中國環境裡越趨艱難。


    「在大陸做文化產業,在沒有創作自由的基礎上做這件事,經常遇到難以想像的荒唐事。我舉一個台團的例子,有台灣樂團歌詞裡面會寫抽菸,這很單純嘛,它甚至跟政治立場沒有關係,它就是講抽菸啊,但你這首歌在大陸有些城市就是不能演出,因為你報批的時候有關部門的人會覺得對青少年不好。我覺得哇這很莫名其妙吔?為什麼歌曲能在平台聽,演出卻不能演?類似的事情真的太多了,太多了,一次又一次削弱你的成就感。然後你就不想幹了真的。」


    去年秋天,阿報終於遞辭職信。在上海聽了無數演出、度過一整段音樂職涯的他,又回到了福建,他最一開始聽見台灣音樂的地方。


    現在的他接案糊口,經營小島音樂速報的時間多了那麼一點點。上一份工作留給他的,是他身上的媒體素養與判斷眼光。他懂得某些行規,例如在中國封殺也分等級,「像盧廣仲,他是歌曲可以聽,但演出不能來,這是半封殺;那像滅火器,他是歌不能聽、演出也不能來,那它是全封殺;何韻詩,她歌曲不能聽、演出不能來,人的名字也不能出現,這是徹底封殺,又是分好幾個檔次你知道嗎?」


    近來小島音樂速報的發文稍稍增多,幕後的阿報眉頭皺得也沒少。有些音樂人有流量,有些剛起步,發佈情報時會不自覺大小眼嗎?點閱一定會高的音樂人醜聞八卦,要發嗎?會不會因為每每發政治敏感情報就被罵,而下意識自我審查?這一切,阿報說他不知道,說不定他已經被改變了。至今抵抗著壓力的,是每每他遇難時現身的同等善意,那是對台灣音樂一樣有愛的人們。


    他也還有愛。「有時候你聽到一首歌,覺得幹這真的太屌了,我一定要讓全世界聽到,結果發出去沒幾個人理你,這個沒辦法,沒辦法。你只能承認說,同一首歌真的每個人的感受不一樣。只是不管怎樣,你當時肯定會心情不好,肯定會低潮,這麼好的音樂怎麼會沒人給你反饋呢?」


    那怎麼辦?「沒辦法,就今天過了再想第二天的事情啊,就這樣。」



    ▍因為我錯過命運


    此刻,小島音樂速報微博有近 39 萬人追蹤。變現的可能,阿報是想過,但沒多久就放下了。


    「本身我就是一個搬運,我只是通過翻牆,把台灣的資訊轉移到大陸而已。我覺得這個稱不上是什麼多高明的技術,我只是做這樣一件事,讓更多人獲得資訊更方便而已。」


    他自己成為了收到台灣訊號的那副天線。


    天線的幸福是什麼呢?〈台灣「獨立音樂」簡史〉完成半年,阿報依然滿意,準備功課時他讀到「台客」一詞原來在台灣語境中經歷流變,從二十年前帶有土氣、流裡流氣的負面意涵,到如今大多偏向正面、支持台灣本土意識的形象,這是他原本不知道的。而因為他寫下,許多中國聽眾才知道。


    訪問時,他說還有幾個詞他不懂,例如 8+9 和 1450。「你寫中文我還查得到,你寫數字這個我真的不知道什麼意思啊!」我向他說明,他哦了好幾聲,說他懂了。他明白的表情,讓這場訪問其中的幾分鐘,也成為了他因愛而獲得的東西之一。


    那篇簡史,其實是在他被禁言三十天的期間寫的。


    他還有很多想寫的,比方台灣說唱的發展,台灣電子搖滾的發展,但辭職以來也還沒有時間完成。他也依舊想念台灣——第二次、也是至今最後一次來台灣時,他除了參加簡單生活節,還看了好幾部電影。「我除了是音樂迷,還是電影迷。很多電影大陸看不到啊。」原來轉播金馬獎也是為了愛。今年,疫情成了另一道看不見的牆,和金門很近的福建忽然又顯得很遠。


    我問,現在的台灣音樂,和當年他隔海聽見的台灣音樂有什麼不同呢?他穿過鏡頭看著我,說下面這段一定要寫:


    「就,現在疫情下到我們這邊演出必須要先隔離,然後你回台灣也要隔離,不像從前那麼方便,導致很多音樂人必須做選擇,要嘛長期待在大陸,要嘛長期待在台灣。」他說,「從前是有些流行歌手會常駐大陸發展,現在有少量獨立樂團也走上這樣的路,在這邊一待就是大半年甚至一兩年的時間,把幾乎所有的事業都放在大陸。那就會導致一種現象啦,說真的:台灣是一個創作自由的環境,就像 Leo王在金曲獎說的,他想唱什麼唱什麼,想寫什麼寫什麼,但有的樂團只單純依賴大陸市場,就不得不順從大陸這邊的規矩。比如剛剛講的抽菸,你寫一首抽菸的歌不能在大陸唱,以後你就不會寫抽菸的歌了⋯⋯」


    「我真的覺得很可惜、很可惜。在台灣的話你可能會寫一些別的,但你在大陸你只會寫這些歌,你就變得跟⋯⋯其實跟一般的大陸樂團沒什麼兩樣說真的。除了你身份證拿的是台胞證之外,你跟其他大陸樂團又有什麼區別了?我覺得台灣人你要分析自己是從哪裡來的,為什麼你之前能寫那些歌⋯⋯我不反對正常的文化交流,但是音樂人自己的路要怎麽走,還是要好好思考。」


    不為自己可惜的,阿報為這些可惜了。因為那是他追逐著很久的地方。長大是發現原來自己想去的地方也有人想離開,這時到嘴邊的話倒只有淡淡一句「可惜了」。


    或許不該說他是天線,天線是不懂追逐的。那年甜梅號到上海交通大學演出,阿報穿越幾十公里,從上海這頭追到那頭,只為了聽一場學生辦的音樂節裡在校園禮堂的演出,「我不是那個學校的人,沒有座位可以坐,只能站在很邊角的地方聽。那個場景想起來滿寒酸的,但還是很感動。那個時候音樂響起來,一切進入那個氛圍⋯⋯」


    那是他唯一一次聽到甜梅號現場,因為後來甜梅號解散了。


    他懂得錯過的滋味,直到今天仍努力不讓更多人錯過。






    在福建,他聽五月天和陳綺貞長大 ——
    專訪台灣獨立音樂微博「小島音樂速報」
    facebook.com/biosmonthly/posts/4910417448988329

    採訪撰稿_ 蕭詒徽
    插畫_ Penn⠀IG@yanjin
    視覺統籌_ 潘怡帆 Crystal Pan Photography
    責任編輯_ 溫若涵

    BIOS monthly
    www.biosmonthly.com
    instagram.com/bios_monthly
    youtube.com/channel/UCckydP8ziXknEtPcySOlDTw
    line.me/R/ti/p/@bios_monthly



    文中標題皆改自顧城詩作:

    黑夜給了我黑色的眼睛/我卻用它尋找光明⠀——〈一代人〉

    我覺得,/你看我時很遠,/你看雲時很近。⠀——〈遠和近〉

    為了避免結束/你避免了一切開始⠀——〈避免〉

    一切仍明明白白,/但我們仍匆匆錯過,/因為你相信命運,/因為我懷疑生活⋯⋯⠀——〈錯過〉

  • 亂碼例子 在 Taipei Ethereum Meetup Facebook 的最佳解答

    2021-06-21 17:57:16
    有 2 人按讚

    📜 [專欄新文章] Tornado Cash 實例解析

    ✍️ Johnson

    📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium

    Tornado Cash 是一個使用 zk-SNARKs 建立的 Dapp,它實現了匿名的代幣交易,這篇文章就用一些程式碼片段,來分享它是怎麼運作的。

    本文為 Tornado Cash 研究系列的 Part 3,本系列以 tornado-core 為教材,學習開發 ZKP 的應用,另兩篇為:

    Part 1:Merkle Tree in JavaScript

    Part 2:ZKP 與智能合約的開發入門

    Special thanks to C.C. Liang for review and enlightenment.

    我們知道在以太坊上的交易紀錄都是公開的,你可以在 etherscan 上看到某個地址的所有歷史交易紀錄,當然地址是合約的話也是一樣。

    也許創建一個新的錢包和地址就好了?假設一個情境是 Alice 想要匿名傳送 1 ETH 給 Bob,Alice 原本的錢包是 A,但她不想讓 A 地址傳給 Bob 的交易紀錄被看到,所以 Alice 創建另一個錢包 B,顯然 B 錢包是空的,Alice 必須把 A 錢包的 1 ETH 傳到 B 錢包,再用 B 錢包的地址傳給 Bob。

    但問題就在於,只要追蹤 B 錢包的地址,就能看到 B 的歷史交易紀錄中 A 錢包曾經打幣給 B 錢包,於是到頭來交易還是被追蹤到了。

    Tornado Cash 的解決方案,簡單來說,它是一份合約,當你要匿名傳送代幣時,就把一定數量的幣丟進合約裡 (Deposit),此時你會拿到一個 note,長得像這樣:

    tornado-eth-0.1-5-0x3863c2e16abc85d72b64d78c68fca5936db2501832e26345226efdfb2bc45804977f167d86b711bb6b4095ddaa646ec93f0a93ac4884a66c1d881f4fc985

    note 就是一串字串,擁有這字串的人,就能提領 (Withdraw) 剛剛傳入合約的代幣。握有 note 就代表擁有提款的權利,所以 note 一旦被別人知道,別人就可以把錢給提走。

    其中,後面那段亂碼,本篇文章就以「秘密」來稱呼,這個秘密是由 secret 與 nullifier 組成,而這兩個都是在鏈下隨機產生的亂數。

    因此 Tornado 的合約基本上會有兩個函式:

    Deposit

    Withdraw

    有興趣的人可以先到 Dapp 上先玩一次看看,使用 Goerli 測試網,這裡可以領 Goerli 的代幣:https://goerli-faucet.slock.it/

    Deposit

    我們就從 Deposit 開始說起,簡單來說, Deposit 是將資料儲存到合約的 Merkle Tree 上。

    剛剛提到的秘密,它是在鏈下產生,由 secret 跟 nullifier 組成,合在一起之後也稱作 preimage,因為我們要對這個 preimage 進行 hash,就會成為 commitment。

    合約中 Deposit 如下:

    deposit 除了傳送代幣到合約之外,需填入一個參數 _commitment。

    我們對 preimage 使用 Pedersen 作為 hash function 加密後產生 commitment,以偽代碼表示如下:

    const preimage = secret + nullifier;const commitment = pedersenHash(preimage);

    這個 commitment 會成為 Merkle Tree 的葉子,所以合約中的 _insert(commitment) 來自 MerkleTreeWithHistory.sol 的合約,將我們的資料插入 Merkle Tree,然後回傳一個 index 給你,告訴你這個 commitment 在 Merkle Tree 上的位置,最後一起發布成公開的 Deposit 事件。

    我們知道 MerkleTree 是將一大筆資料兩兩做雜湊後產生一個唯一值 root,這個 root 就是合約上所儲存的歷史資料。

    root 的特性就是只要底下的資料一有更動,就會重新產生新的 root。

    所以只要一有用戶 deposit ,就會插入新的葉子到 Merkle Tree 上,於是就會產生新的 root,所以在合約中有一個陣列是用來儲存所有的 root 的 roots:

    bytes32[ROOT_HISTORY_SIZE] public roots;

    roots 是用來紀錄每個 deposit 的歷史,每一次 deposit 都會創造新的 root,而所有 root 都會被儲存進 roots 裡,於是當你要提領的時候,就要證明你的 commitment 所算出的 root 曾經出現在 roots 裡,代表曾經有 deposit 的動作,因此才可以進行提領。

    Withdraw

    在 Deposit 之前 Tornado Cash 就會在鏈下產生秘密後交給使用者,擁有這個秘密的人等於擁有提款的權利。

    提領的時候,秘密會在鏈下計算後產生 proof,proof 是 withdraw 需要的參數,所以只要確保這個 proof 能夠被驗證,那麼代幣的接收地址 (recipient) 就可以隨便我們填,只要不填上當初拿來 deposit 用的地址,基本上就做到匿名交易的效果了。

    也就是說,產生這個 proof 並提交給合約,能夠證明此人知道秘密,但卻不告訴合約秘密本身是什麼。

    function withdraw(bytes calldata _proof, bytes32 _root, bytes32 _nullifierHash, address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) external payable nonReentrant;

    我們可以清楚看到 withdraw 函式裡沒有接收有關秘密的任何資訊作為參數,也就是秘密不會與合約有所接觸,也不會暴露在 etherscan 上。

    回顧 ZKP 所帶來的效果:

    鏈下計算

    隱藏秘密

    在 Tornado Cash 的例子中,我們用秘密來產生證明,完成的鏈下計算包括:

    將秘密 hash 成 commitment

    算出 Merkle Tree 的 root。

    以下是簡化後的 withdraw.circom:

    template Withdraw(levels) { signal input root; signal input nullifierHash;

    signal private input nullifier; signal private input secret; signal private input pathElements[levels]; signal private input pathIndices[levels];

    component hasher = CommitmentHasher(); // Pedersen hasher.nullifier <== nullifier; hasher.secret <== secret; hasher.nullifierHash === nullifierHash;

    component tree = MerkleTreeChecker(levels); // MiMC tree.leaf <== hasher.commitment; tree.root <== root; for (var i = 0; i < levels; i++) { tree.pathElements[i] <== pathElements[i]; tree.pathIndices[i] <== pathIndices[i]; }}

    component main = Withdraw(20);

    從上述代碼就可以看出這份 circuit 的 private 變數有:

    secret

    nullifier

    pathElements

    pathIndices

    而 public 變數有:

    root

    nullifierHash

    如同我們一開始說過的,秘密就是指 secret 與 nullifier。這裡進行的鏈下計算就是對 secret 與 nullifier 雜湊成 commitment。而使用的 hash function 叫做 Pedersen。

    在進行 Merkle Tree 的計算之前,我們還檢查了 nullifier 雜湊後的 nullifierHash 跟 public 變數 nullifierHash 是不是一樣的。

    hasher.nullifierHash === nullifierHash;

    接下來,開始計算 Merkle Proof,用意是確認經過雜湊後的 commitment 有沒有出現在 Merkle Tree 上,所以我們的 private input 還有 pathElements 與 pathIndices(詳情參考 Part 1 Merkle Tree in JavaScript),讓它跑一趟 Merkle Proof 的計算,最後就能夠算出一個 root,再確認計算後的 root 與我們的 public 變數 root 是否一樣。

    tree.root <== root;

    於是我們就能產生一個 ZKP 的證明 — 證明 private 變數:secret, nullifier, pathElements, pathIndices 可以計算出 public 變數:root 與 nullifierHash。

    把這個證明提交給合約,合約透過 Verifier 驗證 proof 是否正確,以及必須事先確認:

    public 變數 root 有在合約的 roots 裡面。

    public 變數 nullifierHash 在合約中是第一次出現。

    以下附上完整的 withdraw 原始碼:

    必須注意 ZKP 是向合約證明使用者填入的 secret 和 nullifier 可以計算出某個 root,但無法保證這個 root 曾經在合約的 roots 歷史上。

    所以合約的 withdraw 中,除了 verifyProof 之外,還要事先檢查 ZKP 算出來的 root 是不是真的在歷史上發生過,所以需要 isKnownRoot 的檢查:

    function isKnownRoot(bytes32 _root) public view returns(bool)

    必須先檢查 isKnownRoot 後才能進行 verifyProof。

    經過 verifyProof 驗證成功後,合約就開始進行提款的動作,也就會將代幣傳到 recipient 的地址,最後拋出 Withdrawal 的事件。

    nullifier 與 nullifierHash

    為什麼我們的秘密不是只有 secret 還要額外加一個 nullifier?

    簡單來說,這是為了防止已經提領過的 note 又再提領一次,也就是所謂的 double spend。

    require(!nullifierHashes[_nullifierHash], "The note has been already spent");

    可以看到 withdraw 需要填入參數 nullifierHash,跟 isKnownRoot 一樣的狀況,我們需要對電路的 public 變數先經過一層檢查之後,才能帶入到 verifyProof 裡面。

    nullifierHash 可以理解為這個 note 的 id,但它不會連結到 deposit,因此可以用來紀錄這個 note 是否已經被提領過。

    所以當 verifyProof 驗證成功之後,我們要紀錄 nullifierHash 已完成提領:

    nullifierHashes[_nullifierHash] = true;

    有關為什麼需要事先檢查 public 變數後,才能帶入 verifyProof ,可以參考 Part 2:ZKP 與智能合約的開發入門 提到的 publicSignals 的部分。

    附上 Tornado Cash 的架構圖:

    簡化版的 tornado-core

    tornado-core 的程式碼很簡潔漂亮,所以我模仿該專案自己實作一遍:

    simple-tornado:https://github.com/chnejohnson/simple-tornado

    這份專案只完成了 tornado-core 的核心部分,不一樣的是我的開發環境使用 hardhat 與 ethers 寫成,而 circom 與 snarkjs 使用官方當前的版本,合約用 0.7.0,測試使用 Typescript 。

    比起兩年前的 tornado-core ,simple-tornado 使用的技術更新,可能更適合初學者理解這份專案,但是它有 bug…我在 issues 的地方有紀錄說明。

    在開發的過程中,我的順序是先從最小單位的 MiMC hash function 開始玩,發現必須 javascript 算一次 hash、solidity 算一次、circom 再算一次,確保這三個語言對同一個值算出同樣的 hash 之後,才能放心去做更複雜的 Merkle Tree。

    總結

    我們可以看到 Tornado Cash 簡單的兩個函式:Deposit 與 Withdraw,透過將代幣送入合約後再提領到另一個地址的流程,應用 ZKP 達成匿名的交易。

    除了斷開 Deposit 與 Withdraw 的地址關聯性之外,Tornado Cash 還有做了一層「藏樹於林」的隱私防護,這部份的解釋就請參考 ZKP 讀書會 Tornado Cash。

    網路上很多關於 ZKP 的文章或專案都是在 2019 年後出產的,經過許多人對這項技術的嘗試,讓我們對 ZKP 有了更清晰的理解,如今兩年後,開發工具也變得更加成熟,期待未來在 web 隱私議題上能看到更多 ZKP 大放異彩的應用。

    原始碼

    tornado-core

    simple-tornado

    參考資料

    ZKP 讀書會 Tornado Cash

    Tornado Privacy Solution Cryptographic Review

    Tornado Cash 實例解析 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

    👏 歡迎轉載分享鼓掌

  • 亂碼例子 在 陳彥婷 Tiffany Facebook 的精選貼文

    2020-05-04 20:00:09
    有 11,696 人按讚


    【不是業配!凡盜用影片者!一律走法律途徑!】

    【網路上有很多亂碼帳號盜用影片並且要求線上付款,這完全是盜用跟詐騙喔!請小心不要被騙!】

    👉🏻靠美胸按摩從A奶變C奶!臉部整骨一次見效?

    你們敲碗的影片來了!!!
    因為這攸關『技術性』的問題
    和店家來回的協商和申請
    所以才拖欠這麼久!!!真的很抱歉
    ⚠️ 影片在2019 年底拍攝,懷孕是今年2月。

    📍 喬奶女王Vicky:
    我一次買課程,花了總共8萬,每個月繳7000安捏
    (依照課程數會有不同的價錢)
    當初想說既然這麼有名,那我就試試看!
    如果成功了就是投資!不成功就.....認自己體質差
    殊不知!!!!還真的一堆人懷疑我去整型
    在我去海島的影片、照片都有人開始懷疑我去整形
    那我不就代表我豐胸成功了嗎🎉🎉🎉
    但這真的需要時間培養
    不能強烈的運動、不能忌口、起司熱量多吃才有脂肪長
    從原先的A 變成現在 C
    我就是實際成長的例子!
    (去年2月到今年2月)
    所以我推薦給你們
    讓我們一起以後在店裡坦誠相見 (喂🤣🤣🤣

    📍 東方塑巧顏養生館
    如果有追蹤我IG的人應該都知道這家店
    因為我也是被其他創作者拉去的🤣🤣
    我必須說.....不用整形也能有V臉
    但這都是需要忍痛!忍痛!忍痛!
    我已經算是超級能忍痛的體質了還是會淚灑在店裡🤣
    但.....有去過的人都知道,儘管痛還是會再去報到
    因為你絕對看得見改變!

    雖然很不想告訴大家優惠資訊
    畢竟日後連我自己都會很難約😅
    但既然都拍了那以後大家碰到我就跟我聊個天吧
    (應該很多人見過哭得淅瀝嘩拉的我了)
    到東方塑的粉絲團分享貼文就可以有1280的優惠
    (之前原價都是2880)

    好啦!以上就是我儘管工作再忙再累都會報到的保養
    推薦給女孩們!
    你們絕對不能錯過!
    因為這個錢你花下去絕對值得!!!

    *追蹤我們的IG
    彥婷:thetiffanychen
    巨人:qwe821122
    五寶:hey_giveme5

  • 亂碼例子 在 陳彥婷Tiffany Youtube 的最讚貼文

    2020-05-04 20:00:00

    【⚠️不是業配!凡盜用影片者!一律走法律途徑!】
    【⚠️網路上有很多亂碼帳號盜用影片並且要求線上付款,這完全是盜用跟詐騙喔!請小心不要被騙!】
    【⚠️按摩店家是實體店面!沒有販售任何藥品!只有line預約時間到實體店體驗!】


    👉🏻靠美胸按摩從A奶變C奶!臉部整骨一次見效?

    你們敲碗的影片來了!!!
    因為這攸關『技術性』的問題
    和店家來回的協商和申請
    所以才拖欠這麼久!!!真的很抱歉
    兩樣保養都是從去年2月開始 (已經持續1年多囉!)

    📍 喬奶女王Vicky:
    我一次買課程,花了總共8萬,分期付款!
    (依照課程數會有不同的價錢)
    當初想說既然這麼有名,那我就試試看!
    如果成功了就是投資!不成功就.....認自己體質差
    殊不知!!!!還真的一堆人懷疑我去整型
    在我去海島的影片、照片都有人開始懷疑我去整形
    那我不就代表我豐胸成功了嗎🎉🎉🎉
    但這真的需要時間培養
    不能強烈的運動、不能忌口、起司熱量多吃才有脂肪長
    從原先的A 變成現在 C
    我就是實際成長的例子!
    所以我推薦給你們
    讓我們一起以後在店裡坦誠相見 (喂🤣🤣🤣

    📍 東方塑巧顏養生館
    如果有追蹤我IG的人應該都知道這家店
    因為我也是被其他創作者拉去的🤣🤣
    我必須說.....不用整形也能有V臉
    但這都是需要忍痛!忍痛!忍痛!
    我已經算是超級能忍痛的體質了還是會淚灑在店裡🤣
    但.....有去過的人都知道,儘管痛還是會再去報到
    因為你絕對看得見改變!

    雖然很不想告訴大家優惠資訊
    畢竟日後連我自己都會很難約😅
    但既然都拍了那以後大家碰到我就跟我聊個天吧
    (應該很多人見過哭得淅瀝嘩拉的我了)
    到東方塑的粉絲團分享貼文就可以有1280的優惠
    (之前原價都是2880)

    好啦!以上就是我儘管工作再忙再累都會報到的保養
    推薦給女孩們!
    你們絕對不能錯過!
    因為這個錢你花下去絕對值得!!!
    彥婷我跟你保證!!!!!

    *追蹤我們的IG
    彥婷:thetiffanychen
    巨人:qwe821122
    五寶:hey_giveme5

  • 亂碼例子 在 吳老師教學部落格 Youtube 的最佳解答

    2016-04-25 15:50:13

    PHP與雲端資料庫教學總整理(2015)

    完整連結:
    http://terry55wu.blogspot.tw/2015/04/phpapp.html

    最近開的課程其實都是可以相互整合的,
    而這些可成都跟目前大數據時代的處理與應用有很大的關係,
    其中有和APP開發有關的有 ANDROID APP開發與雲端實務應用2015
    另外,如何和 APP的資料庫連結還有賴向PHP技術,
    這方面的開課有 PHP雲端資料庫教學,
    最近發表過的文章有 :
    PHP雲端資料庫教學之1(打造PHP與MySQL環境)
    PHP雲端資料庫教學之2(建立互動PHP網站)
    PHP雲端資料庫教學之3(動態網頁如何傳遞引數GET與POST)
    PHP雲端資料庫教學之4(PHP證照考題說明與表單設計)
    PHP雲端資料庫教學之5(PHP證照102題環境與題目)
    PHP雲端資料庫教學之6(建立MYSQL資料庫與SQL語法)
    PHP雲端資料庫教學之7(PHP證照202題解題)
    PHP雲端資料庫教學之8(用DW設計新聞公告專題使用者)
    PHP雲端資料庫教學之9(用DW設計新聞公告專題管理者)
    PHP雲端資料庫教學之10(用DW設計購物車01)
    PHP雲端資料庫教學之11(用DW設計購物車02)
    PHP雲端資料庫教學之12(用DW設計購物車03)

    01_如何利用FOR迴圈輸出多選
    02_如何利用FOR迴圈輸出多選(GET傳送)
    03_PHP證照考題說明與表單設計說明
    04_PHP證照考題說明與結果畫面
    05_02_表單介面設計
    06_表單設計細節與傳遞參數與接收
    07_如何在表格中顯示接收到的變數
    08_將換行轉成BR換行與PHP中文手冊

    之後的課程還會在講有關PHP與MYSQL連解方面的課程,
    也可以把EXCEL的資料匯入到MYSQL,可以利用PHP建立雲端資料庫,
    可以當成是EXCEL和APP的共用資料庫,
    對這部分有興趣的網路學員可以留意。
    教完MYSQL之後,接下來就是利用DW CS6來建立動態資料庫網站,
    亦即不用PHP程式也可以建立互動式網站,
    但還是有點PHP程式會比較好理解邏輯。

    PHP雲端資料庫教學之4(PHP證照考題說明與表單設計)
    PHP雲端資料庫教學之5(PHP證照102題環境與題目)

    參考書目
    Dreamweaver CS6 X PHP超強互動網站特訓班(附影音教學、獨家擴充程式、範例、試用版)作者: 鄧文淵/總監製,文淵閣工作室/編著

    挑戰PHP5/MySQL程式設計樂活學
    作者: 文淵閣工作室 (著)

    PHP 5實力養成暨評量(附光碟)
    作者: 財團法人中華民國電腦技能基金會

    php教學例子,php mvc教學,php ajax教學,資料庫,大數據,開放資料,XAMPP,Dreamweaver CS6,雲端資料庫,php mysql教學,html教學,php教學影片,php教學範例,php 安裝

  • 亂碼例子 在 吳老師教學部落格 Youtube 的最佳解答

    2016-01-22 15:53:59

    從PHP雲端資料庫到APP開發之9(PHP證照第2類_MYSQL)

    完整影音連結
    https://www.youtube.com/playlist?list=PLgzs-Q3byiYNH59eNM-x_M6bA7MrCLG9n

    教學論壇(之後課程會放論壇上課學員請自行加入):
    https://groups.google.com/forum/#!forum/labor_phpapp2015

    PHP與雲端資料庫教學懶人包(2015)
    http://terry55wu.blogspot.tw/p/blog-page_18.html

    這是PHP雲端資料庫第一次上課,主要是了解學生的程度和學習需求,並且打造PHP與-MySQL環境並下載XAMPP
    安裝的懶人包 [下載],還真的蠻簡單的,只需要下載並接壓縮到D碟,
    不要有中文資料夾名稱,並執行setup_xampp安裝,
    啟動Apache與MySQL即完成開發環境設定,並查出自己的IP位址,
    這樣就可以打造開發環境,也可以當成雲端伺服器來使用,
    家裡有光纖的建議申請固定IP就可以來架雲端了。

    01_MYSQL環境設置與建立LIBRARY資料庫
    02_如何將MYSQL匯出EXCEL檔(無亂碼)
    03_如何建立查詢表單與MYSQL查詢關鍵字
    04_如何將查詢結果分頁與SQL除錯技巧
    05_如何產生分頁與詳細資料說明
    06_如何將查詢系統轉成語查詢

    參考書目
    Dreamweaver CS6 X PHP超強互動網站特訓班(附影音教學、獨家擴充程式、範例、試用版)
    作者: 鄧文淵/總監製,文淵閣工作室/編著

    挑戰PHP5/MySQL程式設計樂活學
    作者: 文淵閣工作室 (著)

    PHP 5實力養成暨評量(附光碟)
    作者: 財團法人中華民國電腦技能基金會


    php教學例子,php mvc教學,php ajax教學,資料庫,大數據,開放資料,XAMPP,Dreamweaver CS6,雲端資料
    庫,php mysql教學,html教學,php教學影片,php教學範例,php 安裝