這幾天席捲全球的人性實驗
《魷魚遊戲》(Squid Game)影集,跟上了嗎?
長期的讀者應該知道,我一直在推廣的學習妙招
就是開英文配音和英文字幕版
沒錯,既然沒有要學韓文,追劇就順便練英文囉
正好符合 Min 老師說的「類母語者學習內容」!
我常說現在的學習者很幸福,學習資源充足!
不過,面對琳瑯滿目的學習材料,該怎麼選才好?
Min 老師 Yes Min:當英文家教/書籍譯者是一件很迷人的事 有實用建議
一起來看
#英英字典 #全英文教學影片 #英文字幕的日本動漫
無門檻職場英文系列:https://lihi1.cc/ZsFYm
-
#學習如何有效的學習:1. 內容(續)
#課本沒教的實用事
【 類母語者內容 】
上一篇解釋了學習者應該留意接觸的內容:
目前主要落在哪一類?
如何增加真正有效的那一類?
理想上,母語者內容越多越好
但由於門檻較高
有些初中階學習者可能感到吃力
其實在學習內容的成分裡
混搭「類母語者內容」,是很好的選擇
類母語者內容常比母語者內容好吸收
也較無學習者內容的缺點:
不自然、過於簡化、單調
那麽,什麼算是類母語者內容呢?
接下來舉出三個例子
🐨
一、英英字典
假設我們今天看到一個生字是 prestigious
很多學生會丟 google 或查英漢字典
看到「有聲望的」,然後就結束了
這樣等於是在使用學習者內容
同樣查一個字
不如調整成使用更有效的內容
也就是英英字典
比方說,如果我們查 MacMillian 字典
會看到 prestigious 的解釋是
admired and respected by people
比起「有聲望的」
看到 admired and respected by people
可以提供學習者更多層面的收穫:
1. 複習單字(或許是 respect)
2. 學到新字(或許是 admire)
3. 複習文法(這邊是被動用法)
4. 接觸到英文表達的邏輯
或者,換用另一本字典 Oxford
會看到 prestigious 是
respected and admired as very important or of very high quality
這時的解釋則提供了難度高一點的練習
幾本大型的英英字典
如 MacMillan、Oxford、Cambridge、Longman
對每個字的釋義難度有高有低
無論選的是哪種,累積下來
都遠勝於 Google translate 或其他英漢字典
🐨
二、母語者的全英文教學影片 / 文章:
在自學時,假設我們今天想研究某個文法概念
或是某個主題的相關用語
與其只參考中文的教學資料
我會推薦使用母語者製作的教學影片 / 文章
完全取代或混搭學習者內容皆可
在 YouTube、engVid 上
就有不少好老師拍的影片 👍
要留意的是,如果是混搭
英文內容應為主角,中文內容是配角
因此,順序很重要,要先英再中
先看英文,盡可能把理解度拉到最高
再看中文,確認有無盲點或加強印象
如果是先中再英,大腦就會偷懶關機
🐨
三、有英文字幕的日本動漫
當然,動漫只是一個例子
其他語言的影視作品有附英文字幕也算
如果對日本動漫比英美影視作品有感
我非常推薦使用這一種的內容
而且要用在二刷
像我最近在幫一個學生上她看過的動漫
既然已經知道了劇情的走向
她就可以專心在英文本身
而且這種內容有畫面、情境的搭配
吸收會比只用書本或教學影片好很多
加上是喜愛的內容
學生本來就上得比較開心
當她發現學英文的效果也好
自己也會更有動力 ❤️
對了,英文字幕照理說是給母語者看的
為什麼我不是歸在母語者內容呢?
因為影視作品的台詞
蘊含該語言的文化、時事、歷史元素
但動漫的英文字幕是來自翻譯
而非編劇原本寫出的台詞
🐨
這兩篇總共聊了三大類學習素材
在自學時
我們可以視程度、興趣、情況
去搭配素材成分的比例
但無論比例如何
有成效的配法不外乎是:
類母語者內容+學習者內容
類母語者內容+母語者內容
類母語者內容+母語者內容+學習者內容
最後,如果是在課堂上
學生有老師從旁講解、引導
我由衷推薦學習者內容越少越好
完全不用,其實也沒關係 👌
與其擔心程度而用學習者內容
會變成是讓學生多繞路
還不如一開始就直接選擇適合的(類)母語者教材
-
跟我說說,你曾學過有效的 #類母語者內容?
影片配字幕,實在很讚
10/2 來和 Min 老師一起精聽力,更讚!
初階/中階職場英文快來:https://lihi1.cc/
同時也有35部Youtube影片,追蹤數超過24萬的網紅啟點文化,也在其Youtube影片中提到,【線上課程】《自信表達力》~讓你不再害怕開口 從「敢表達、說清楚」到讓人「聽得進、會去做」的完整學習 課程連結:https://pse.is/RG5NC 第一講免費試聽:https://youtu.be/fAjySLoa2f8 不定期推出補充教材,讓學習無限延伸:https://pse.is/NUJ...
「情境教學例子」的推薦目錄:
- 關於情境教學例子 在 Facebook 的最佳解答
- 關於情境教學例子 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於情境教學例子 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於情境教學例子 在 啟點文化 Youtube 的精選貼文
- 關於情境教學例子 在 啟點文化 Youtube 的最佳貼文
- 關於情境教學例子 在 啟點文化 Youtube 的精選貼文
- 關於情境教學例子 在 康軒陪你教國小- 【康軒英語】情境教學Easy Go 💡 # ... 的評價
- 關於情境教學例子 在 (1/6)你也能成為自然情境教學達人【在家輕鬆教養/訓練系列5 ... 的評價
情境教學例子 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] Unirep介紹: 使用ZKP的評價系統
✍️ Ya-Wen Jeng
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Unirep是什麼? 怎麼用?
Photo by Raphael Lovaski on Unsplash
UniRep 是一個使用零知識證明(Zero-knowledge Proof)而達到具有隱私保障的評價 (reputation) 系統。使用者有權利享有多個暫時性的身份,但又同時能提出證明,讓其他人可以驗證評價是否符合自己宣稱的數量。此外,使用者也無法拒絕接收對自己不利的評價。
想像一個情境:如果Alice是Airbnb的使用者,Alice常常透過Airbnb租房,且Alice曾經獲得獲得許多Airbnb房東的好評;有一天Alice想透過Booking.com訂房,http://xn--alicebooking-kt4so6lvyab96x7trhi5b54x.com/,所以在Booking.com上沒有任何評價,萬一Booking.com的房東不想把房子租給來路不明的客人,那Alice要如何向Booking.com的房東證明她其實都是用Airbnb租房,且獲得許多好評?
Alice雖然可以透過截圖或公開自己的資訊向Booking.com的房東證明自己擁有這些好評,但這樣Alice的隱私或許會被洩漏,例如Alice不想讓Booking.com的房東知道自己去過哪些地方、住過哪些民宿;或者Alice有可能偽造截圖,或者偽造評價,那Booking.com的房東要如何相信Alice所提供的證明文件是真的來自Airbnb的房東?除此之外有沒有更彈性的方式,Alice可以選擇性地向Booking.com的房東證明,自己至少有10個好評,但不透露自己總共有多少好評?
Photo by Andrea Davis on Unsplash
使用Unirep協定就可以解決這個問題。UniRep 取名自 Universal Reputation,希望透過區塊鏈上智能合約的可互用性 (interoperable,指智能合約容易被多方呼叫且容易透過智能合約與對方互動),讓不管是Airbnb的房東、Booking.com的房東或是Alice都能很容易地透過Unirep的智能合約與對方互動,且透過零知識證明的方式,讓Alice的評價具有隱私的保障,Alice不用明確地向Booking.com的房東說這些評價是怎麼獲得、是什麼時候獲得,也可以彈性的證明自己至少有多少好評,或者最多有多少差評。
密碼學
Unirep主要用到的密碼學方法有
雜湊函數 hash:若有一個雜湊函數 f(x) = y 則由x可以很輕易的用f算出y,但從y推回x是幾乎不可能的,且要找到兩個不同的x對應到相同的y也是幾乎不可能的(沒有碰撞問題)。
零知識證明 zero-knowledge proof:可以將複雜的運算邏輯轉成容易驗證且具有隱私保障的驗證問題,使用者只要將變數輸入,這個零知識證明的演算法就會產生對應的證明且計算出對應的結果,使用者只要將此證明和運算結果輸入驗證的程序中,其他人就能驗證使用者是不是提出正確的證明,若驗證成功,則驗證者就能相信提出證明者高機率擁有正確的知識,也就是在計算證明時的輸入變數。
ZKP Proof System
ZKP Verification System
Semaphore:semaphore 是設計為可以用零知識證明驗證的身份認證系統。Unirep 中用來產生私鑰 (identity) 和公鑰的 hash 值(identity commitment),讓使用者不必公開 identity 仍能透過零知識證明驗證其公私鑰的對應性。
雜湊樹 Merkle trees:Unirep 中大量運用雜湊樹的方式確保評價紀錄,而其中用到的雜湊樹又分兩種:Incremental merkle tree 和 Sparse merkle tree
Incremental merkle tree: 從 index 0 開始依序插入雜湊樹中的樹葉。為了使 ZKP 的 circuit 大小固定, Unirep 中使用固定高度的 Incremental merkle tree。
Sparse merkle tree: 在特定的 index i 插入樹葉
Incremental merkle tree and sparse merkle tree
UniRep中用到的名詞定義
Epoch
指一段特定的時間,例如7天
UniRep 的 Epoch 從 1 開始計算,7天過後Epoch數加一,即 Epoch 變為 2
Epoch Key
每個使用者在每個 Epoch 都能產生 n 把 Epoch key,用來收取評價 epoch_key = hash (id, epoch, nonce)
id: 這裡指用 semaphore 產生的 identity
epoch: 表示這是在第幾個 epoch 產生的 epoch key
nonce: 若 Unirep 規定使用者能在一個 epoch 產生 5 把 epoch key,則使用者可以選從 0 到 4 為此 nonce
因為雜湊函數的性質,算出來的 epoch key 很難推回原本的 id, epoch, nonce, 所以看到 epoch key 並不能推回使用者是誰。
以Alice為例,當Alice住完Airbnb,房東會透過 epoch key 給予 Alice 評價,但房東無法知道 Alice 在同個 epoch 的其他 epoch key 是哪一把,也無法知道 Alice 在別的 epoch 獲得的評價,除非 Alice 在這個 epoch 重複使用同一把 epoch key 收取評價。
User 使用者
用 semaphore 產生 identity 並使用此 identity 註冊的使用者
使用者是接收評價、證明評價、或是花費評價的人,用 epoch key 跟其他人互動,因為 epoch key 會隨著 epoch 增加而改變,所以對使用者來說每個 epoch 能產生的 epoch key 都不同,具有保護隱私的效果。
在上面的例子中使用者指的是 Alice, Bob, Airbnb 的房東, Booking.com的房東
Attester 證人
用 Ethereum address 或 smart contract address 註冊的用戶
是會被使用者記錄下來的評價給予者
Unirep 會給這些 address 一個 attester ID,而這個 attester ID 不會隨著 epoch 增加而改變,使用者可以知道這個評價是來自哪一個 attester。
在上面的例子中指的是 Airbnb 跟 Booking.com,因為 attester ID 不變,所以使用者可以證明這些評價是來自於 Airbnb 或是 Booking.com
User State Tree (UST)
是一 Sparse merkle tree
每個使用者都有自己的 User State Tree,其中樹葉表示所收到的評價的hash值,而葉子的 index 表示 attester ID,UST 樹葉的定義為
USTLeaf = hash(posRep, negRep, graffiti)
例如 Airbnb 的 ID 是1,Booking.com 的 ID 是 3,那 Alice 的 User State Tree 中 index 為 1 的地方會有自己在 Airbnb 獲得的總評價的 hash 值,而 index 為三的地方則為空的評價。另一個使用者 Bob 的 User State Tree 亦同,在 index 為 1 的地方會有自己在 Airbnb 獲得的評價,在 index 為 3 的地方會有自己在 Booking.com的評價。
Global State Tree (GST)
是一固定樹高的 Incremental merkle tree
Global State Tree 的葉子到樹根都是公開的資訊,當有使用者註冊或者更新 User State Tree 時會在 Global State Tree 裡新增一個新的樹葉,GST 樹葉的定義為:
GSTLeaf = hash(id, USTRoot)
先送出的樹葉先插入到較前面的 index,之後的樹葉依序插入 GST 中。
以 Alice的例子來說,當 Alice跟 Bob註冊 Unirep時,都會產生一個 GST的樹葉,更新 GST的樹根,若 Alice先註冊,則 Alice的 index會較 Bob前面。注意,這邊的 Airbnb 和 Booking.com 等 attester 並不是用這棵 Global State Tree註冊。
Epoch Tree
是一個 Sparse merkle tree
Epoch Tree 跟 Global State Tree 一樣從葉子到樹根都是公開的資訊,Epoch Tree 中樹葉的 index 為 epoch key,而樹葉的值為該 epoch key 的 sealed hash chain
每個 epoch key 都有一個 hash chain,hash chain 的定義為
hashedReputation = hash(attestIdx, attesterID, posRep, negRep, graffiti)hashChain[epochKey] = hash(hashedReputation, hashChain[epochKey])
此 hash chain 是為了防止使用者漏收了哪一筆評價,如果使用者少收了其中一筆評價,則 hash chain 的結果會完全不同。最後驗證時如果其中一個 epoch key 的 hash chain 改變,會造成 epoch tree 樹根跟原本的 epoch tree 的樹根不同。
而 Sealed hash chain 是在每個 epoch 結束後,Unirep 智能合約會再將這條 hash chain 再 hash 一次
sealedHashChain[epochKey] = hash(1, hashChain[epochKey]) isEpochKeyHashChainSealed[epochKey] = true
需要再把這條 hash chain 封起來的用意是,避免這把 epoch key 過了這個 epoch 之後再繼續接收評價,所以 epoch tree 會用這個 epoch key 最後的 sealed hash chain 去計算樹根。
Nullifier
中文翻譯為註銷符,當我們要防止一件事情重複發生時,就可以使用這個 Nullifier
Unirep 中使用到 Epoch key nullifier:此 nullifier 是用來限制使用者不能在不同的 epoch 使用重複的 epoch key 去收取評價,也不能被其他使用者使用;此外也可以用來檢視使用者是否重複執行 UST 的更新
Nullifier 也用 hash 計算,但多使用一個 domain 變數,避免與 epoch key 產生相同的 nullifier 而洩露自己擁有的 epoch key,也可以用不同的 domain 產生不同用途的 nullifier
epochKeyNullifier = hash(EPOCH_KEY_DOMAIN, id, epoch, nonce)
Epoch Transition
一個 epoch 結束過後,要透過 epoch transition 的步驟,更新 Unirep 及使用者的狀態
其中要做的事包含將智能合約上的 epoch 數加一,還有將所有 epoch key 的 hash chain 封起來
接著使用者就可以執行 User State Transition 更新自己的 UST
User State Transition
到下一個 epoch 後,使用者可以透過自己的 identity,找出自己在前一個 epoch 所有的 epoch key,並根據每把 epoch key 收到的評價更新到自己的 UST,最後計算出最新的評價狀態,產生一個 GST的樹葉,插入 GST 中 (如同註冊時一樣)。
使用者之後如果要花費評價或者產生下一個 epoch 的 epoch key 時,因為必須確認自己的 UST 在當前的 epoch,所以需要經過 User State Transition 確保自己有一個 GST 的樹葉在 GST 中。
Unirep 協定
有了 Unirep 的名詞定義後,接著介紹 Unirep 是如何運作的。
註冊
Unirep 的 user 和 attester 的註冊方式不同:
User signup and attester signup in Unirep
User
User 透過 semaphore 產生 identity 和 identity commitment,identity 就如同私鑰,identity commitment 就如同公鑰
將 identity commitment 和預設的 UST 樹根經由 hash 計算得 GST 的一個樹葉
若使用者要證明自己在某個 epoch 有註冊或者有更新自己的 UST,則證明自己是 GST 的某一個樹葉,利用零知識證明的方法,輸入 identity、UST 樹根,還有 merkle tree 中要計算 hash 值的相鄰節點,則最後可得到一個 GST 的 root,其他人可以驗證這個 GST 的 root 是否符合這顆公開的 GST。
Attester
Attester 則是用自己的錢包,或者用智能合約的地址註冊,呼叫 attester sign up 的 function 後,Unirep 會指定一個 attester ID 給這個地址,往後 attester 用相同錢包或合約地址給予評價時,Unirep 會檢查此地址是否被註冊,若有註冊則可以給予 epoch key 評價。
以 Alice 和 Bob 為例,Alice、Bob、Airbnb的房東、Booking.com的房東會產生 identity 並且透過 Unirep 合約用 user 的註冊方式獲得一個 GST 的樹葉代表自己;
而 Airbnb 和 Booking.com 會透過 attester 的註冊方式,使用特定的錢包地址或是撰寫智能合約呼叫 Unirep 的 attester sign up function。
當然 Alice 或 Bob 如果想用自己的錢包註冊為 attester 也是可以,這時合約就會紀錄 Alice 和 Bob 的錢包地址,並給予一個新的 attester ID。
給予評價
在 Unirep 中評價的接收者是 epoch key,接著介紹 user 和 attester 是如何互動。
How an attester gives reputation to an epoch key
Alice 在 Unirep 註冊過後,就可以產生 epoch key 接收評價
epochKey = hash(identity, epoch, nonce)
但 Airbnb 的房東看到這把 epoch key,要如何知道 Alice 確實是 Unirep 的合法使用者,且 epoch key 的 是合法的,例如 nonce 小於 5,或者 epoch 是當前的 epoch?
如果 Alice 直接提供 epoch 和 nonce,別人沒有 identity 也無法計算此 epoch key,更不用說如果 Alice 提供 identity 會造成 Alice 完全沒有隱私可言,所有人都可以計算出 Alice 收過哪些評價。
因此我們用一個零知識證明,證明此 epoch key 是合法的。細節請參考 epoch key proof,主要是證明使用者有一個合法的 GST 樹葉在 GST 中,並且 epoch 和 nonce 也都符合。
房東得到 Alice 提供的 epoch key 和 epoch key 的證明,並且透過 Unirep 的合約驗證通過之後,就可以給予評價。
獲得空投評價、使用者可以給予評價的限制可以由各個應用自行定義,例如 Airbnb 可以決定空投 30 個正評給使用者, Booking.com 可以決定空投 20 個正評給使用者。
另外,為了確認房東也是合法的使用者,也為了防止房東重複花費 (double spending) 自己的評價點數,Unirep 上的應用也可以用 reputation nullifier 及其 proof 去證明使用者合法使用自己的評價。
例如,此 reputation nullifier 可以用下列計算方式取得:
reputationNullifier = hash(REPUTATION_DOMAIN, id, epoch, nonce)
當 reputation nullifier 及 proof 產生後,就會與房東要給的評價一起發送到 Airbnb 的智能合約上,智能合約會驗證 proof 是否合法,nullifier 是否有被發送過,若檢查都通過的話則 Unirep 會紀錄此評價給 epoch key,並將 hash chain 更新。
接收評價
使用者即使可以證明自己擁有哪一把 epoch key 並且大家都知道這把 epoch key 有多少評價,但這有可能造成使用者故意忽略其他把 epoch key 中對自己不好的評價,因此 Unirep 限制使用者只能在每個 epoch 結束,每把 epoch key 都封起來之後,才能用 User State Transition 更新自己的評價。
User State Transition in Unirep
這裏也是用 User State Transition Proof 去保證使用者是根據正確的方式計算出最新的 UST,且用 epoch tree 限制使用者必須處理每一把 epoch key 的結果。
亦即,需要等到 epoch 結束後,Alice 才能透過 User State Transition 獲得 Airbnb 房東的評價,更新自己的使用者狀態。
證明評價
當使用者通過 User State Transition 之後會有最新的 UST 狀態,此時 Alice 就可以透過 reputation proof 向 Booking.com 她有來自 Airbnb 的評價,在reputation proof 中檢查使用者是否有其宣稱的 UST (例如總共有多少好評、多少差評來自哪一個 attester ID),並且此 UST 的狀態儲存在當前 epoch 的 GST 中。
在生成 reputation proof 時,即使 Alice 總共有 100 個好評,但 Alice 仍可以產生「至少有10個好評」的證明,Booking.com 的房東若驗證成功,則只能知道 Alice 宣稱的「至少有 10 個好評」而不能知道 Alice 總共有 100 個好評。
常見問題
Alice 能不能給 Airbnb 的房東評價? Alice 能不能給 Bob 評價?
可以。
Airbnb 的房東和 Bob 也都能產生 epoch key,因此如果 Alice 有兩者的 epoch key 及合法的 proof 則可以給予評價。此時 Alice 可以選擇透過 Airbnb、Booking.com、或甚至自己的 Ethereum account 當作證人給予評價 (也必須選擇一個證人)。
Alice 可以透過 Unirep 給 Airbnb 評價嗎?
如果 Airbnb 也透過 Unirep 註冊為使用者,並且產生 epoch key 的話就可以。但如果 Airbnb 只註冊為證人的話不行。
Alice 可以證明評價來自哪一個 Airbnb 房東嗎?
如果 Airbnb 的房東沒有註冊為證人,則 Alice 不能證明評價來自哪個房東。
若 Airbnb 的房東用自己的 Ethereum account 註冊為證人,則 Alice 只能證明評價來自這個 Ethereum account,但無法知道這個 account 是一個 Airbnb 的房東。
從 Airbnb 獲得的評價可以在 Booking.com 花費嗎?
需看 Booking.com 的智能合約如何定義,但一般來說不行,因為 attester ID不同,但未來可能會開發各個應用程式之間的兌換評價功能。
如果遲遲不執行 User State Transition 會發生什麼事?會不會收不到之前的評價?
若 Alice 在第一個 epoch 註冊,並在第一個 epoch 產生 epoch key 接收評價,但 Alice 到第五個 epoch 才執行 User State Transition,那 Alice 會根據第一個 epoch 的 GST、epoch tree 執行 User State Transition,因此仍然可以在第五個 epoch 收到來自第一個 epoch 的評價;而在第二到第四個 epoch 因為 Alice 無法產生出合法的 epoch key proof,因此無法接收評價。
User State Transition 可以自動執行嗎?
不行。
只有使用者主動給出私鑰,即 semaphore 的 identity,才可以產生合法的 User State Transition proof,若將私鑰交給第三方幫忙執行可能會侵害使用者的隱私。
結論
Unirep 是一個具有隱私保障的評價系統,透過 ZKP 的保護使用者可以在匿名的情況下收取評價、給予評價、並且向他人證明自己的評價。Unirep 可以用於跨應用程式間的評價證明,可以在 A 應用程式中獲得評價,並向 B 應用程式證明在 A 應用程式中獲得多少評價。若想了解更多有關 Unirep ,可以參考 Github、文件或加入 telegram 群組討論。
本文感謝 CC, Nic, Kevin, Doris 協助審稿。
Unirep介紹: 使用ZKP的評價系統 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
情境教學例子 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
情境教學例子 在 啟點文化 Youtube 的精選貼文
【線上課程】《自信表達力》~讓你不再害怕開口
從「敢表達、說清楚」到讓人「聽得進、會去做」的完整學習
課程連結:https://pse.is/RG5NC
第一講免費試聽:https://youtu.be/fAjySLoa2f8
不定期推出補充教材,讓學習無限延伸:https://pse.is/NUJK9
【7/4 開課!】《學「問」~高難度對話的望聞問切》~第19期
掌握達成共識的關鍵能力!(僅剩五位名額)
課程資訊:http://www.koob.com.tw/contents/232
更多學員心得分享:http://goo.gl/A07zZ0
[ 8/2 開課!]【寫作小學堂】~寫出專屬風格,找回文字悸動~第六期
打造一盞自己的聚光燈,建立起專屬於你的品牌印象
課程資訊:https://www.koob.com.tw/contents/3655
更多學員心得分享:https://pse.is/NE3QN
【線上課程】《理財心裡學》~擺脫家庭影響,從心培養富體質
課程連結:https://pse.is/EPBWE
第一講免費試聽:https://youtu.be/HgrDK7pqR-0
不定期推出補充教材,讓學習無限延伸:https://pse.is/NJ5VE
【線上課程】《時間駕訓班》~
學會提升效率,擺脫瞎忙人生,做自己時間的主人
課程連結:https://pse.is/DDDHB
第一講免費試聽:https://youtu.be/flfm52T6lE8
不定期推出補充教材,讓學習無限延伸:https://pse.is/GXZWM
【線上課程】《人際斷捨離》~
讓你留下怦然心動的關係,活出輕盈自在的人生!
課程連結:https://pse.is/E5MW5
第一講免費試聽:https://youtu.be/YyLvd1cNcDw
不定期推出補充教材,讓學習無限延伸:https://pse.is/LVRLY
【線上課程】《過好人生學》~讓你建立迎向未來的思維與能力!
課程連結:https://pse.is/H8JXH
第一講免費試聽:https://youtu.be/-EHOn0UxMys
不定期推出補充教材,讓學習無限延伸:https://pros.is/KQZZH
【我們有Podcast囉~】歡迎到Apple或Android內建的Podcast搜尋「啟點文化一天聽一點」訂閱我們!另外,在Spotify和Soundon也找得到喔!
Apple Podcast~https://pse.is/N2WCZ
Google Podcast~https://pse.is/PEN2Z
在Spotify收聽~https://pse.is/PQT76
在SoundCloud收聽~https://soundcloud.com/ekoob
歡迎加入「啟點文化 X Telegram 」:https://t.me/turnkeysolution
桌遊【人際維基】~一玩就懂得別人的在乎:https://goo.gl/Ej4hjQ
到蝦皮購買【人際維基】:https://goo.gl/ASruqR
=====================
以下為本段內容文稿:
在你的生活或者是工作上,會不會經常需要「說服他人」呢?假如你有這樣的需求,那麼今天的內容會給你很具體的幫助。
在你收看之前,請先記得訂閱我們的頻道,並且按下小鈴鐺,你的行動支持,是我們製作節目的最好鼓勵。
歡迎來到「一天聽一點」,今天跟大家談三個說服的技巧。
「說服」啊在你我的生活中是一個必備的能力,無論你的工作是需求最明顯的業務員、企業主;還是日常生活當中要面對家人、朋友,還是面對伴侶,都有「說服」他人的機會。
而「說服」喔有幾個很簡單的入口,我們今天就從這幾個簡單的入口來開始。
如果呢你還是個新手,不知道如何流暢的說服另外一個人,那麼這幾個入口會給你很大的幫助;但如果你已經是個職場的老手,這些摘要也能夠給你很重要的提醒,去補足那些你可能過去忽略的細節。
舞台中央效果
我們就來看這三個技巧,到底分別是什麼?
第一個說服的技巧,乍聽之下非常的簡單,但可能很多人卻沒有做到,它是什麼呢?它就是「舞台中央效果」。
「舞台中央效果」呢,是由兩個心理學家,透過分析電視的益智節目,發現到一個很有趣的規則。
他們發現在節目裡面,經常站在中間的人,一路挺進決賽的機率是42%,而最後贏得比賽的機率是45%。
而站在邊緣的參賽者啊,他們挺進決賽的機率只有17%,而最後贏得比賽的機率,更低到只有10%。
這樣的結果,很符合我們的經驗法則,那就是我們在拍照的時候,重要的人物通常會站在「C位」;C位指的就是「正中間」,他能夠引起更多的關注,這也就是「舞台中央效果」。
也就是說喔,如果你想要說服別人,就讓自己站在最顯眼的位置;比如說呢,在會議桌的正中間、站在場地的正中間。
如果想要用資料來說服別人,就請你把資料放在「正中間」,這樣子就能夠大幅提高說服的成功機率,這是一個很容易執行的技巧。
而聽起來很簡單的事情,卻不一定是每個人都做得到的;你一定看過業務人員,或者是上台簡報的人,他們縮在邊邊角角,好像很怕人看見他們一樣。
我相信他們一定準備了很多的資料,內容也真的非常的好,他們想盡辦法的想要說服我們;但事實上,你在台下卻聽得很無感,這是為什麼呢?因為他沒有完整的呈現他自己啊!
於是你根本不認為他是重要的,這讓我想到喔,在我的【自信表達力】的線上課程裡面,特別重視「排練」,最主要的原因就在這裡。
其實很多很簡單的道理,人們常常是「知道」但是卻「做不到」,原因是什麼呢?就是因為缺少了刻意的練習、刻意的「排練」啊!
如果你過打籃球、學過跳舞,你就一定知道只是用眼睛看,這是不夠的嘛!要讓自己能夠「做得到」最好的方式,就是跟著模仿、跟著做做看。
並且給自己一點時間,去熟悉流程跟內容,反覆排演,等到正式上台你自然就能夠比較容易的流暢表達,你不必再用你的腦袋去記內容。
那到底「排練」在排什麼呢?在我的【自信表達力】課程裡,我會很細緻的陪伴你,去檢視「排練」需要注意的重點。
包含事前的準備,你要在什麼時候做什麼事,只要你照著做,你就能夠用身體去記住排練的感受,跟自然的呈現;然而它能夠幫助你達到最好的結果,就是讓你自然而然的把自己放在C位。
簡單至上
再來,我們看第二個說服的技巧,這個技巧就是「簡單至上」。
「簡單至上」是什麼意思呢?其實人性是這樣的喔,越容易讓你聽得懂的,你就會覺得越熟悉、越親近;越熟悉越親近的,要讓人做決定就會越容易。
有時候說服的內容,可能是很高端的東西,只有少數有專業能力的人,他們才會知道;但你能不能用最簡單的語言,用比喻的、用類比的方法,讓人更容易的去理解這些內容,這就是你的功力所在了喔。
打個比方吧,假如有業務員要跟你推銷保險,要是他們跟你講保險法規、理賠條款,那你一定就很快的會很想睡覺、興趣缺缺。
可是如果他懂得幫你舉簡單的例子,像是你開車上路,會不會需要備胎?你會嫌備胎重、會耗油,就隨便把備胎丟掉嗎?
如果你不會的話,那為什麼你會覺得保險是多餘的?每天付出一點點,不到一杯咖啡的錢,會很多嗎?
像這樣子簡單的比喻,就能夠讓人聽得懂,而且更容易的去改變,或者是做出必要的決定。
那麼當你遇到需要「說服」的情境的時候,如何讓你的東西,是讓別人能夠聽得懂,而且聽得進的,這就是很值得投資的學習項目了!
在【自信表達力】的課程裡,有一個單元喔,叫做「讓人沒有抗拒的五個原則」;在這個單元裡,我會帶著你去思考,如果只講「一個重點」,那會是什麼?
並且透過實際的例子,幫助你整理最重要、最容易的第一步會是什麼呢?幫你擺脫你明明很認真的說,卻沒有記憶點,讓別人常常覺得一頭霧水的這樣的窘境。
請講白話文
最後呢,第三個說服人的原則,就是「注意用詞遣字,避免吊書包」。
在普林斯頓大學的研究者喔,他們就明確的指出,寫作者難免會想要在報告或信件裡面,使用比較複雜的文字,讓自己感覺博學多聞一點啊!
但事實上,這樣子對讀者來說,難讀的文字或者是用語,會讓人心裡有排斥感,甚至於會懷疑作者的水準太差,才沒有辦法用簡單、好懂的方法說明。
這個道理在表達、說服的情境裡,同樣成立!因此呢,你在想說服人的時候,要特別小心你的用詞遣字。
要是喔,你只會講那些「專有名詞」,不懂得「換句話說」,就會讓人覺得你好有距離,沒有辦法正確了解你的意思。
舉個例子喔,在心理學裡面有一個專有名詞,叫做「體現認知」。
它是指喔,人的身體跟心理會相互影響的現象。一般人會比較少聽到這樣的名詞,所以我在教學的時候,我就會換個說法。
我會說喔,如果你平常心情好的時候會唱歌,哪天喔你心情不好的時候,你就刻意的讓自己唱唱歌,很快的你心情就會好起來。
這樣的現象,就是「體現認知」;而當學生很容易理解的時候,就會有更多的交流跟互動。
然而「換句話說」講起來很容易,但是要做起來可不簡單喔!
為什麼呢?我想邀請你想一想喔,任何一個能夠用簡單的話,把自己的專業說得很清楚的人,他一定是對自己的專業有足夠的了解。
可是他要弄得夠清楚,事先要不要先下足工夫、做足功課呢?
就像我剛剛說的「體現認知」這樣的例子,要是我對於這個學術名詞沒有徹底的了解,我就沒有辦法用簡單的話來說。
所以如果你想要說服別人,而那件事情又有一定的複雜程度,你會事先做功課嗎?你知道怎麼樣做才能夠四兩撥千斤嗎?
假如你想要學會怎麼樣「做功課」,那就一定要把握【自信表達力】這一門線上課程喔!
知道也要做到
在這一門課程裡,我會給你完整的思考工具,也就是「做功課的方向」。
比如說吧,你經常覺得自己說得都對,卻不是別人要的,那麼你會需要「排除預設」這樣的思考工具。
又比如說,你很努力的表達,但不管怎麼說,總是說得很淺薄;那麼你就需要「拉長邏輯鏈條」這樣的思考工具。
掌握思考工具,加上正確的「排練」,才能夠有效的達成說服的目的。
【自信表達力】上市到現在已經一個多月了喔,有很多當業務員、業務主管的學生都會告訴我,這一門課給他們最大的收穫,就是幫助他們跳脫出「話術」這樣的瓶頸。
並且啊,因為懂得換位思考,能夠更體貼自己的客戶、懂得客戶的在乎,達到更好的成交機率。
我想喔~人同此心,心同此理吧!
今天要是我想要買產品、是一個花錢的人,我當然會選擇最懂我的需求,最能夠幫我解決問題的業務員來服務我。
然而要是我當聽眾,一定也會選擇最能夠打動我、說服我,對我來說有具體幫助的內容來聽,這樣子我花的時間跟精神,才有意義嘛!
如果你也想要有效的說服他人,並且更期許自己,成為一個值得信賴的人,那歡迎你加入【自信表達力】這一門課。
特別喔,是在新冠肺炎的期間,很多人都不方便到處亂跑,包含你我;這正是一個最好的閉關學習的時機。
相信當一切雨過天晴後,你會有更完整的自我準備,成為一個更有影響力的人!
然而無論你有沒有參與我的線上課程,我都希望你把「舞台中央效果」、「簡單至上」跟「避免吊書包」這三個秘訣,帶進你的表達裡,祝福你!
希望今天的分享能夠帶給你一些啟發與幫助,我是凱宇。
如果你喜歡我製作的內容,除了YouTube以外,我們也開通了Podcast頻道。你只要在Podcast的運用裡面,搜尋「啟點文化一天聽一點」,你就可以訂閱我們的Podcast。
除了訂閱以外,也希望你能夠給我們5顆星的評價,並且分享給你身旁的朋友,我們需要你的支持,讓我們更有力量走下去。
然而如果你對於啟點文化的商品,或課程有興趣的話,我們在每一段影片的說明裡,都有課程的相關連結,歡迎你的加入。
希望我能夠跟你一起學習、一起進前,在影響他人跟完善自己的道路上你不孤單,因為有啟點文化、因為有我們。
歡迎你的加入,那麼今天就跟你聊到這邊了,謝謝你的收看,我們再會。
情境教學例子 在 啟點文化 Youtube 的最佳貼文
【線上課程】《自信表達力》~讓你不再害怕開口
從「敢表達、說清楚」到讓人「聽得進、會去做」的完整學習
課程連結:https://pse.is/RG5NC
第一講免費試聽:https://youtu.be/fAjySLoa2f8
不定期推出補充教材,讓學習無限延伸:https://pse.is/NUJK9
【線上課程】《理財心裡學》~擺脫家庭影響,從心培養富體質
課程連結:https://pse.is/EPBWE
第一講免費試聽:https://youtu.be/HgrDK7pqR-0
不定期推出補充教材,讓學習無限延伸:https://pse.is/NJ5VE
【7/4 開課!】《學「問」~高難度對話的望聞問切》~第19期
掌握達成共識的關鍵能力!
課程資訊:http://www.koob.com.tw/contents/232
更多學員心得分享:http://goo.gl/A07zZ0
【隱喻工作坊】認識自己的獨特,與潛意識做朋友~2020/05/23 開課
課程資訊:https://www.koob.com.tw/contents/4165
【線上課程】《時間駕訓班》~
學會提升效率,擺脫瞎忙人生,做自己時間的主人
課程連結:https://pse.is/DDDHB
第一講免費試聽:https://youtu.be/flfm52T6lE8
不定期推出補充教材,讓學習無限延伸:https://pse.is/GXZWM
【線上課程】《人際斷捨離》~
讓你留下怦然心動的關係,活出輕盈自在的人生!
課程連結:https://pse.is/E5MW5
第一講免費試聽:https://youtu.be/YyLvd1cNcDw
不定期推出補充教材,讓學習無限延伸:https://pse.is/LVRLY
【線上課程】《過好人生學》~讓你建立迎向未來的思維與能力!
課程連結:https://pse.is/H8JXH
第一講免費試聽:https://youtu.be/-EHOn0UxMys
不定期推出補充教材,讓學習無限延伸:https://pros.is/KQZZH
【我們有Podcast囉~】歡迎到Apple或Android內建的Podcast搜尋「啟點文化一天聽一點」訂閱我們!另外,在Spotify和Soundon也找得到喔!
Apple Podcast~https://pse.is/N2WCZ
Google Podcast~https://pse.is/PEN2Z
在Spotify收聽~https://pse.is/PQT76
在SoundCloud收聽~https://soundcloud.com/ekoob
歡迎加入「啟點文化 X Telegram 」:https://t.me/turnkeysolution
線上課程【不用開口,就讓你擁有人際好感】
啟動人際溝通的關鍵影響力 https://goo.gl/v3ojdo
桌遊【人際維基】~一玩就懂得別人的在乎:https://goo.gl/Ej4hjQ
到蝦皮購買【人際維基】:https://goo.gl/ASruqR
=====================
以下為本段內容文稿:
歡迎來到「一天聽一點」,我們每週一到週五晚上7點,準時更新,透過心理學在真實生活裡的具體運用,陪伴你每天進步一點點,如果你也想要自己每天都有所進步,就請你一定要訂閱我們的頻道。
在公眾表達上,你可能有過這樣的心情,就是準備的資料很多,想講的東西很多,導致有一種進退失據的感覺?
就是什麼都想說,但是什麼都說不清楚,結果反而被你的聽眾畫錯重點,被問很多尖銳,或複雜的問題。
到最後最慘的狀況就是,心臟彷彿要從嘴巴裡噴出來,然後翻閱了非常多的資料,讓自己完全在聽眾面前無法冷靜下來!
如果你有過類似這樣的經驗,無論在任何時刻回想起來,你一定會嚇出一身冷汗;那到底是什麼原因,會讓自己在簡報,或者是公眾表達裡,去陷入這種最糟糕的狀況呢?
其實有一個很重要的原因,就是你太想要100%的說完整;你可能聽到這邊有個好奇~「100%的說完整」這不是理所當然的嗎?
不過這樣的心態放在具體的表達裡面,會讓你掉入一個很大的坑啊!因為從最實際的角度來看,你要100%的傳達自己腦海裡面所想的事情,這根本就是不可能的任務。
你再怎麼樣完整編排自己的內容,對方也可能是因為對方的原因,漏聽了某些個部分;他可能是因為前一天晚上熬夜,或者是因為其他的事件,讓他心神不寧,所以你可能說的很清楚,但是對方仍然有更高的機率是聽得很模糊的!
除此之外呢,也可能是對方不知道真正重要的關鍵點在哪裡,對於那些你可能覺得是「常識」的想法,但是對於你的聽眾而言,可能是難以理解的概念。
所以在這裡你要特別留意的就是,100%的傳達幾乎是不可能的,同時你在表達上的目標,也沒有必要設這樣的方向。
如果進一步來看,其實你想要100%傳達內容的目的,無非是希望被對方採用你的意見,或者是獲得對方的認同,所以呢你應該倒過來想。
就是你怎麼做,能夠讓你的意見是被採用,或者是被認同的?而決定你要表達的內容,到底到哪裡就是足夠的。
我們假設一個比較極端的例子哦,假設你跟對方光只是透過聊天,對方就很開心的說:「我很滿意,這個案子就交給你吧!」
既沒有計劃書,也沒有其他資料,就用口頭說明,基本上就按照你的想法來進行,你想,這在真實的情況裡面,有可能嗎?
除非是電視或電影的情節才會這樣演吧!不然真實的狀況裡面,根本不可能這樣子啊!
而如果從另一方面來看,如果對方說:「你的說明我非常非常的瞭解,你也說明得非常非常清楚;但是我無法採用你的建議!」
那你想想看,你說的很清楚,對方也認同,你說的很清楚,但是結果是他不接納,那這有什麼用呢?
所以呢,你在表達任何訊息的時候,你應該從你的「目的」往回頭來看,就是如果你的目的是要對方能夠接納、認同;那你講到哪裡?或者是你用什麼樣的方式去設計你的內容,而對方就能夠接納,這樣就可以了!
其實我們常常都會以為,一個人要做任何決定,一定是蒐集完所有的資料,參考完所有的信息,才能夠做決定。
但真實的狀況都不是如此,一個人會做決定,都是某一個點讓他聽懂了,或者是打動他了,他就做決定了!
所以在面對真實表達的情境裡,無論是在一兩分鐘的電梯簡報,還是一兩個小時的專題報告;基本上都有一個共同的原則。
你必須懂、必須要把握,就是在你上場開口說話之前,一定要先幫自己做足一個思考的工作。
這個思考的工作,就是你要好好的去理清一件事情,這件事情叫做「你要讓人記住什麼?」;也就是說,不管你的表達長度有多長,或有多短,如果只講一個重點,那會是什麼?
如果你沒有先想清楚這一件事情,它就會造成我們今天所提的,就是你什麼都想說,就等於什麼都沒說清楚!
就像小時候念書準備考試一樣,當你整本教科書都是重點,那就等於沒有重點;然而如果進一步來看,我們要怎麼樣開始去思考,我們要讓別人記住的是什麼,那一個重點到底要怎麼提煉出來?
在這邊呢跟你分享三個簡單的tips,第一個就是幫自己設定一個最重要的,而這最重要的,通常就是對方會最在乎的,所謂的「痛點」啊!
就像是一個人頭在痛,請你先給他止痛藥,而不是告訴他均衡飲食的重要,這個時候的他,說再多均衡飲,他都聽不進,不是嗎?
而第二個tips就是,你可以提煉出那個最容易的,所謂的「最容易」,不是從你的角度認為最容易,而是從「對方的角度」,有哪些動作是他可以最輕鬆、最容易的起步?
就像是我都會邀請你,如果你想要每天進步一點點,就訂閱我們的頻道,因為你只需要「一天聽一點」。
我讓你開始覺得「學習其實是一件很輕鬆、很容易的事情」,至於學習的過程當中,會有很多再進階的功課,你總是先得要有第一步,後面的才會發生,不是嗎?
所以呢,最容易的起步點,也是你可以訴求的,而第三個就是直接告訴你的聽眾,他第一步可以做什麼?
在我教學的過程當中,可能一個晚上,三個小時的課程,我無論說了多少內容,最後我一定會讓我的學生帶一個,他可以試著回家之後實踐的功課。
而當他能夠輕鬆有效的記住這一點之後,他就會有很高的機率,在他接下來的生活當中試著去做做看,那麼我也就達到了我教學的目的。
所以呢,在這裡幫你整理一下哦,如果你要讓別人能夠認同你、接受你,那麼你在表達的時候請放棄掉,你要100%完整表達這樣的觀念,請你聚焦在一個重點,如果只講一個重點,那會是什麼?
你可以思考一下,什麼是最重要的事,什麼是最容易的事,什麼是對方可以第一步去做的事。
然而如果你想要在表達上有更完整的前進,也歡迎你可以參與我近期推出的線上課程【自信表達力】。
你在【自信表達力】裡將學到的,不止是表達的技巧,更重要一點是,你怎麼樣去思考你的內容,去設計你的內容?
其實「表達」的關鍵往往不是在於說,「說」只是最後的一步;關鍵在於你會不會思考?
當你會思考的時候,其實你可以用很輕鬆、很容易的表達方式,達成別人認同你、接納你的目標。
然而不管你會不會參與我的線上課程,我都希望你在表達自己的過程裡,少一點阻礙,多一點順暢。
希望今天的分享能夠帶給你一些啓發與幫助,我是凱宇。
如果你喜歡我製作的內容,我們的內容在Podcast裡面也找得到,你只要在Podcast的應用裡面搜尋「啟點文化一天聽一點」,你就可以訂閱我們;除了訂閱之外,也希望你給我們5顆星的評價,我們需要你用行為來支持我們。
然而如果你對於啟點文化的商品或課程有興趣的話,如同今天提到的【自信表達力】課程,相關的訊息在我們的影片說明裡都有連結。
期盼你的加入,也期盼我能夠跟你一起學習,一起前進,那麼今天就聊到這邊了,謝謝你的收聽,我們再會。
情境教學例子 在 啟點文化 Youtube 的精選貼文
【10/15 開課!】《學「問」~高難度對話的望聞問切》~第17期
掌握達成共識的關鍵能力!
課程資訊:http://www.koob.com.tw/contents/232
更多學員心得分享:http://goo.gl/A07zZ0
【人際維基】桌遊體驗會~讓你一玩就懂別人的在乎~8/3(六)14:00
活動資訊課程:https://www.koob.com.tw/contents/3072
【線上課程】《時間駕訓班》~
學會提升效率,擺脫瞎忙人生,做自己時間的主人
課程連結:https://pse.is/DDDHB
第一講免費試聽:https://youtu.be/flfm52T6lE8
【線上課程】《人際斷捨離》~
讓你留下怦然心動的關係,活出輕盈自在的人生!
課程連結:https://pse.is/E5MW5
第一講免費試聽:https://youtu.be/YyLvd1cNcDw
線上課程【不用開口,就讓你擁有人際好感】
啟動人際溝通的關鍵影響力 https://goo.gl/v3ojdo
桌遊【人際維基】~一玩就懂得別人的在乎:https://goo.gl/Ej4hjQ
到蝦皮購買【人際維基】:https://goo.gl/ASruqR
=============================
以下為本段內容文稿:
歡迎來到「一天聽一點」,不曉得在生活裡,你有沒有過這樣的感覺?就是你很努力、很認真,但是就得不到自己要的;然後呢、你就更賣力的去要,結果得到的卻更糟糕。
這就像是你一直很努力工作、加班,認為多賺點錢,是為了讓家人可以過更好的生活;你心裡很在乎他們,你也想要透過付出得到家人的肯定。
但是經常缺席家庭活動的你,看在家人的眼裡,卻像個獨行俠,對家人漠不關心,忽略了重要的情感交流;所以他們根本不想跟你在一起,只想躲得遠遠的。
而你覺得很受傷,做了這麼多卻沒有得到任何的回報,所以你很生氣,大聲的斥責他們,要他們知恩圖報,對你好一點;可是他們卻不甩你,甚至於反過來指責你冷漠、獨裁。
你一定很納悶,為什麼自己的出發點是好的,但結果卻是自己不想要的?
我絕對相信喔,你是關心家人的,不是故意要疏忽他們,但是如果從大腦運作的角度來說;一旦你「太專注」在工作上面,大腦就會自動的過濾掉,其他「和工作無關」的事情,把它們都視為「不重要」的資訊。
接著呢,當事情不如預期的時候,就會有一組隱藏的「假設」,影響了你對於結果的判讀;造成你越努力越挫折,明明你很渴望跟家人親近,結果卻是你付出越多,他們卻離得越遠。
特別是一個人,沒有辦法覺察到自己的「假設」,而這些假設就會慢慢的,演變成牢不可破的「信念」;最後當事情不如預期的時候,就會演變成為一種「崩潰式」的失敗。
信念的崩塌一旦發生,就像骨牌效應一樣,一張骨牌倒了,會導致全面的崩塌;而處在風尖浪頭的那個人,或許就是正在觀看影片的你啊!
儘管如此你卻完全的束手無策,只能放任命運的安排,從此失去鬥志。算命師跟你說,你跟家人的緣分很薄、不適合談感情、錢來得快去得快;而你就真的這樣相信了,從此放棄了任何努力的可能。
聽到這裡喔,如果讓你覺得惶惶不安,那請你不要太擔心,我會掀開這個鍋蓋,就一定會給你解方。
在我多年的教學經驗裡,我發現很多人的失敗,其實都只是「一時的」,或者是「局部的」;只要有人能夠陪著他,找到真正的原因,做一點微調和修正,就有機會能夠逆轉人生。
但他們卻因為缺乏正確的思考方向,導致自己一直陷在極端的想法裡,難以自拔。而這個重要的解方,其實就是四個字,「重新評估」。
當你能夠透過「重新評估」,學會改寫自己詮釋現實的方法;那麼一切就有轉圜了!
就拿前面剛剛那個因為工作,而忽略家人的例子來說喔,假使我們的主角,碰到被誤解的時候,像是他的家人覺得他一是個冷漠的人、對家庭漠不關心。
他的直覺假設,原本是「你們都故意要傷害我,抹煞我所有做的事情,你們都是壞人。」
那他接下來的反應,因為這樣的假設,一定是更加激烈要求他的家人,用他自己覺得「對的、好的、舒服的」方式來對待他,這樣子才能還他一個清白嘛!
因為在他的主觀認定裡,家人是「故意」要傷害自己,所以他要保護自己。可是這樣子,他跟家人之間的相處,也只會越來越疏離。
但假如他懂得「重新評估」,把這整件事情的起因,詮釋成:「我待在家的時間太少,這是事實;難怪家人不了解我,對我會有誤解。但沒有關係,我可以從現在開始,撥出時間來修補,讓他們了解真正的我。」
或者是另外一種詮釋:「原來一直努力賺錢,擁有更多的財富,並不是家人想要的;是我誤解了他們,我可以重新了解,他們真正要的東西是什麼。」
其實談到這裡我發現喔,很多男人就是用這種比較直線、單向的想法,在認定家人要的;我常常會說喔,這是「你以為家人要的」跟「家人真正要的」;它可能是有落差的喔!
但無論如何你可以感受一下,剛剛我所提出來的「重新詮釋」的角度;這些一點點「假設」的不同,會決定我們接下來的行為,能不能更朝向自己想要的方向發展?
這也是算命會開始不準的起始點,因為你開始「修」了嘛!
「重新評估」這個技巧,經過很多的心理學家,和神經科學家的證實,他告訴我們「重新評估」是增進「情緒恢復力」的最有效方法。
它可以在事情不順利的時候,讓我們的大腦不再做出強烈的防衛反應;更令人振奮的是,研究還發現只要你能夠試著「重新評估」,並且執行成功,就能夠有「一次有用,終身有效」這樣的結果。
換句話說喔,就是當你學會「重新評估」,它能夠幫助你好好的面對不開心的事。而且當類似的不開心,再次發生的時候,更能夠讓你輕鬆的面對。
那麼這個好用又有效的「重新評估」,我們到底該怎麼做呢?具體的做法有三個步驟,第一步驟是「關注真正的事實」。
打個比方喔,假如我們在一場考試裡面,我們以為自己可以拿到90分,但結果考試卷發下來,你只有拿到60分。
當下的感覺你可能會失望,或者是覺得好丟臉,再不然就是世界毀滅了…「我居然考出這種爛成績,以後一定進不了好學校!」。
不過如果回到「關注事實」的原則,請你暫時先抽離自己的情緒,因為眼前唯一的事實,就是「這次的考試你拿到了60分」如此而已;這並不代表你就是一個壞學生、笨小孩啊!
關於這一點喔,我必須要澄清,情緒並不是不重要,或者是考砸了不能夠難過,而是我們更應該先關注的是什麼?
做叫「現在真正重要的是什麼?」、「確定的事實究竟是什麼?」
假如情緒只會讓這整件事情,往更糟的方向發展,那麼就得設法先放下情緒,專注在實際的狀況裡,讓自己有機會冷靜下來,而不是陷入一種盲目的恐慌中。
再來呢,「重新評估」的第二個步驟,叫做「找出心中的信念」。
在這個步驟裡,你需要特別留意心裡那些「我覺得這件事情怎樣怎樣、如何如何」,又或者是這件事情「別人會怎麼看我?」、「相關人士會怎麼看待自己?」這樣的小聲音你都要特別留意。
比如說吧,這次考試你只得到60分,「回家我一定被爸媽打斷腿」;又或者是喔,這次考試我只拿到60分,「同學一定瞧不起我」、「老師一定覺得我很笨」…這一類的內在語言,你都要特別留意。
簡單來講喔,就是到了第二個步驟,你好好關注自己心中的小聲音,釐清自己有哪些自動化的想法,把它們都「標定」出來。
而接下來就可以進入第三個步驟,叫做「想出不同的可能性」。
用剛剛考試的例子來說,最嚴重的信念就是「回家會被爸媽打斷腿」這樣的假設。
當你聽到這裡,我先邀請你想一想喔,這種假設成真的機率,到底有多高?從小到大聽了無數次,爸媽說要打死你,結果你現在不就還活得好好的,不是嗎?
而且換個角度來看,爸媽如果不在乎你,他們還會因為你成績不好,而費力打罵你嗎?這背後是不是隱藏了一個,其實他們對你的愛跟關心,而你卻有一點忽略掉,甚至於沒有看見呢?
說得更直接一點,「想出不同的可能性」,就是請你先問自己,你想像中最糟的假設,只有一種詮釋的方法嗎?
有沒有可能是你的直覺錯了?如果真的錯了,還會有什麼可能?或者是,可以換什麼角度來看待這件事?
也就是說,試著從你信念裡,那最嚴重的假設想想看,有什麼不同的解釋,然後改寫自己的信念、重新詮釋它,就能夠讓你的情緒穩定下來,做更冷靜的全面思考。
總結來看喔,「重新評估」就是一種用不同的方式,解釋眼前的事實,它能夠讓我們在困境當中,擁有相對好的主觀體驗,幫助我們渡過難關。
而且呢,鑽研「情緒恢復力」這個領域的科學家,像是哥倫比亞大學的凱文・奧克斯納,和史丹佛大學的詹姆士・葛羅斯。
他們透過實驗進一步的證實,用重新評估過的信念或假設,解釋不愉快的情境之後,接著去監測受試者的生存迴路,他們比較不會「嗶嗶」作響啊!
這就表示「重新評估」確實能夠讓人能安下心,不會陷入「打或逃」的這種反射式的警戒狀態裡。
聽到這裡,如果你很認同「重新評估」的妙用,我很鼓勵你可以開始試著做做看。
第一步「關注真正的事實」、第二步「找出心中的信念」、第三步「想出不同的可能性」,相信這三個步驟會帶給你很大的幫助。
然而當你在實踐的過程裡,發現自己更深刻的議題,並且想要透過完整的自我理解,包含所有的「外在行為」跟「內在信念」的習慣,進一步找到適合自己的調整、長出自己的力量。
我很鼓勵你喔,可以參與我的【CIA通達力】課程,這是一門為你量身訂做的學習,我們會透過六週的時間陪伴你,面對自己生命裡所有的處境,怎麼樣能夠做到「重新評估」,活出你想要的模樣。
其實在近年裡,「幸福心理學」的研究報告都一致認為,學會「重新評估」的人,情緒會比較穩定、人際關係會比較順利,幸福感自然也會比較高。
期盼你能夠透過這段分享,活出專屬於你的幸福人生。希望今天的分享,能夠帶給你一些啟發與幫助,我是凱宇。
如果你喜歡我製作的內容,請在影片裡按個喜歡,並且訂閱我們的頻道,別忘了,訂閱旁邊的小鈴鐺按下去,這樣子你就不會錯過,我們所製作的內容。
那麼如果你對於啟點文化的商品,或課程有興趣的話,如同今天內容最後提到的【CIA通達力】課程。我們在2019年的最後一期,在10月26號開課。
在我錄影的這個時候,這一門課的名額也在倒數了;希望你能夠把握這難得的機會,錯過這一期,明年就要等到4月份、5月份之後了。
所以呢,我很希望當你想要好好的看待自己、看待生命,看懂、並且能夠找到生命當中的不同可能性,不再被命運綁架,讓算命在你身上開始變得不準,成為自己生命的主人。
那麼歡迎你加入我們的學習,希望我在10月26號的教室裡,能夠見到你,謝謝你的收看,我們再會。
情境教學例子 在 (1/6)你也能成為自然情境教學達人【在家輕鬆教養/訓練系列5 ... 的美食出口停車場
第一集什麼是自然 情境教學 法生活 情境教學 專家曲智鑛老師精彩講述這門課推薦給○對孩子不能順應場合調整而頭痛的爸媽○想學會透過情境設計培養孩子能力 ... ... <看更多>
情境教學例子 在 康軒陪你教國小- 【康軒英語】情境教學Easy Go 💡 # ... 的美食出口停車場
【康軒英語】情境教學Easy Go #6大情境主題教案+學習單+教學PPT 一次下載! 延伸自Follow Me 系列教材主題, 配合Task 教學任務, 選用符合學生 ... ... <看更多>