📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌
同時也有57部Youtube影片,追蹤數超過26萬的網紅ほぅ(Housan),也在其Youtube影片中提到,ゾンビが大量に刑務所に!100体以上のゾンビたちに囲まれる! 【前回:高級車覆面 vs 信号無視車!大銃撃戦に出動】→https://youtu.be/G-HbWyv69JE 【次回:レア飛行機をあつめる!】→https://youtu.be/lQngpnVzE0M 【超有名人になる!?街に広告を...
「h index公式」的推薦目錄:
- 關於h index公式 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於h index公式 在 ほぅ(Housan) Youtube 的最佳貼文
- 關於h index公式 在 ほぅ(Housan) Youtube 的最佳解答
- 關於h index公式 在 meg Youtube 的最讚貼文
- 關於h index公式 在 Impact factor 與h-index - 看板PhD - 批踢踢實業坊 的評價
- 關於h index公式 在 Simple formula to calculation of the h-index - GitHub Gist 的評價
- 關於h index公式 在 Why the hIndex is 3 and not 0, since there are 5 papers with 0 ... 的評價
h index公式 在 ほぅ(Housan) Youtube 的最佳貼文
ゾンビが大量に刑務所に!100体以上のゾンビたちに囲まれる!
【前回:高級車覆面 vs 信号無視車!大銃撃戦に出動】→https://youtu.be/G-HbWyv69JE
【次回:レア飛行機をあつめる!】→https://youtu.be/lQngpnVzE0M
【超有名人になる!?街に広告を出す】→https://youtu.be/ORSdYZ53y5c
【高級車で店に激突!マイケルの命令!】→https://youtu.be/OdhM0LbGJcg
【刑務所で囚人がゾンビに!トレバーゾンビ!】→https://youtu.be/9PGcsLioJ2g
🔴Twitter
https://twitter.com/mgsbattlefield
🔴お便りはこちらから!公式ブログ
https://housan.info
🔴Amazon欲しいものリスト
http://amzn.asia/gkR1ZVQ
🔴【GTA5】警察官になる パート1からイッキ見しよう!
https://www.youtube.com/watch?v=bL3mCB8Ltzo&list=PLBcgqOO5IzwMXNFC0ao1lCKMgIcAzTZl4&index=2&t=0s
🔴【GTA5】警察官になる【新着順】
https://www.youtube.com/watch?v=UUvwoxhffVA&list=PLBcgqOO5IzwNdqDGJPaNLPXk0NiRttacV&index=2&t=0s
🔴【GTA5】警察官になる【日本警察】
https://www.youtube.com/watch?v=Y52QK7prnjQ&list=PLBcgqOO5IzwPnvKV2jyYTGw8Y_i_k7zLb&index=2&t=0s
🔴【GTA5】ゾンビ大戦争【シーズン1】
https://www.youtube.com/watch?v=fuVJ-gz6kLw&list=PLBcgqOO5IzwPxrlbD8SOn4XIuD7Lc32VP&index=2&t=0s
🔴【GTA5】ゾンビ大戦争Ⅱ【シーズン2】
https://www.youtube.com/watch?v=xHfAMJmfgvo&list=PLBcgqOO5IzwNVPc6h6NWapfLKMLjLnIGH&index=2&t=0s
🔴【GTA5】ゾンビ大戦争 - 警察編【シーズン3】
https://www.youtube.com/watch?v=8I3YfVcW2f4&list=PLBcgqOO5IzwOYmDrjxX7vlYQ2FB70M4PF&index=2&t=0s
🔴【GTA5】ゾンビ大戦争【米軍編】【シーズン4】
https://www.youtube.com/watch?v=2hOnR1zgXXc&list=PLBcgqOO5IzwPivq3yaCYZOx8S6dGEJMn6&index=2&t=0s
🔴【GTA5】消防士になる【日本】
https://www.youtube.com/watch?v=pVOc9oqWAdU&list=PLBcgqOO5IzwNQz-Tvog-Pj1l1bDqqlFPR&index=2&t=0s
🔴【GTA5】救急隊になる
https://www.youtube.com/watch?v=qbCoMPD8RT0&list=PLBcgqOO5IzwMvaNXUKrj-hNrQFMwA7Px1&index=2&t=0s
🔴【GTA5】ドクターヘリ
https://www.youtube.com/watch?v=l97o6Nm4GiA&list=PLBcgqOO5IzwMvaNXUKrj-hNrQFMwA7Px1&index=4
🔴【GTA5】消防士になる【LSRD】終
https://www.youtube.com/watch?v=xcpKHhNYUVE&list=PLBcgqOO5IzwOtd4TNnHZeNRB4oTgwSU6U&index=2&t=0s
🔴デトロイトビカムヒューマン!君の選択肢で未来が変わる!
https://www.youtube.com/watch?v=yxVdRd5zgx0&list=PLBcgqOO5IzwNWcNY7NbORO-ye3zl2n5L3&index=2&t=0s
🔴【GTA5】道路パトロール
https://www.youtube.com/watch?v=3Ybes14aUsI&list=PLBcgqOO5IzwOOtKWWhZT5kWhccfdT5cZi&index=2&t=0s
🔴【GTA5】ほぅのMOD紹介!
https://www.youtube.com/watch?v=3Ybes14aUsI&list=PLBcgqOO5IzwM_fo_C_o_TcUaR8E9GmK25&index=2&t=0s
🔴【GTA5】ほぅの生活
https://www.youtube.com/watch?v=qSFkADdPvbc&list=PLBcgqOO5IzwOTMn3Cofkx1PwQS0U-00C2&index=2&t=0s
🔴【GTA5】お金持ち生活・市民生活【新着順】
https://www.youtube.com/watch?v=iC00QHp0rQ4&list=PLBcgqOO5IzwMhfbmc6uEkrSa2uEIeLHQ9&index=2&t=0s
🔴【Cities: Skylines】ほぅ市長のまちづくり 【新着順】
https://www.youtube.com/watch?v=EjDKaXNaFgU&list=PLBcgqOO5IzwOIdeSyC8v31O9gxnOHuMuz&index=2&t=0s
🔴【緊急112】消防士になるシリーズ
https://www.youtube.com/watch?v=4z8YTTKPjNY&list=PLBcgqOO5IzwMDtHUagN2QBsqyk4Wl95Iw&index=2&t=0s
🔴【消防士FPS】一人称で消防士になる
https://www.youtube.com/watch?v=LUdkaw-JmrQ&list=PLBcgqOO5IzwOhbVd9xLaVvhX1c_WWJqg5&index=2&t=0s
🔴【PlanetCoaster】遊園地作ろうぜ!
https://www.youtube.com/watch?v=Z3pQ_B8AaiM&list=PLBcgqOO5IzwPRqRDESfnG6QJtqbIGL01j&index=2&t=0s
🔴挿入音源・Music
Music by Joakim Karud https://youtube.com/joakimkarud
🔴LSPDFR Plugin & Callout MODS download link
LSPDFRの撮影で使用しているプラグイン・コールアウト を紹介!
https://housan.info/lspdfr/lspdfr_plugin
zombie mod made by
JulioNIB
Patreon:https://www.patreon.com/JulioNIB
Prison Interior
ダウンロード:https://www.gta5-mods.com/maps/prison-interior-shaezbreizh
Classic school bus
ダウンロード:https://www.gta5-mods.com/vehicles/classic-school-bus
LSPD/LAPD SWAT
ダウンロード:https://www.gta5-mods.com/player/lspd-lapd-swat
SCAR-H
ダウンロード:https://www.gta5-mods.com/weapons/payday-2-scar-h-mk-17
🔴【ハッシュタグ】これらのワードでも検索できます。
#GTA5#GTA5警察#グラセフ#ほぅ
![post-title](https://i.ytimg.com/vi/ED4oDf7DLGY/hqdefault.jpg)
h index公式 在 ほぅ(Housan) Youtube 的最佳解答
パトカー戦車が登場!ティーガー戦車をパトカーとして運用したら最強すぎた!
【前回:軍隊消防車を警察パトカーとして使う!】→https://youtu.be/BkLmiecj9JE
【次回:防弾装甲パトカー!サイバートラック覆面】→https://youtu.be/hgipSIoMS6s
🔴Twitter
https://twitter.com/mgsbattlefield
🔴お便りはこちらから!公式ブログ
https://housan.info
🔴Amazon欲しいものリスト
http://amzn.asia/gkR1ZVQ
🔴【GTA5】警察官になる パート1からイッキ見しよう!
https://www.youtube.com/watch?v=bL3mCB8Ltzo&list=PLBcgqOO5IzwMXNFC0ao1lCKMgIcAzTZl4&index=2&t=0s
🔴【GTA5】警察官になる【新着順】
https://www.youtube.com/watch?v=UUvwoxhffVA&list=PLBcgqOO5IzwNdqDGJPaNLPXk0NiRttacV&index=2&t=0s
🔴【GTA5】警察官になる【日本警察】
https://www.youtube.com/watch?v=Y52QK7prnjQ&list=PLBcgqOO5IzwPnvKV2jyYTGw8Y_i_k7zLb&index=2&t=0s
🔴【GTA5】ゾンビ大戦争【シーズン1】
https://www.youtube.com/watch?v=fuVJ-gz6kLw&list=PLBcgqOO5IzwPxrlbD8SOn4XIuD7Lc32VP&index=2&t=0s
🔴【GTA5】ゾンビ大戦争Ⅱ【シーズン2】
https://www.youtube.com/watch?v=xHfAMJmfgvo&list=PLBcgqOO5IzwNVPc6h6NWapfLKMLjLnIGH&index=2&t=0s
🔴【GTA5】ゾンビ大戦争 - 警察編【シーズン3】
https://www.youtube.com/watch?v=8I3YfVcW2f4&list=PLBcgqOO5IzwOYmDrjxX7vlYQ2FB70M4PF&index=2&t=0s
🔴【GTA5】ゾンビ大戦争【米軍編】【シーズン4】
https://www.youtube.com/watch?v=2hOnR1zgXXc&list=PLBcgqOO5IzwPivq3yaCYZOx8S6dGEJMn6&index=2&t=0s
🔴【GTA5】消防士になる【日本】
https://www.youtube.com/watch?v=pVOc9oqWAdU&list=PLBcgqOO5IzwNQz-Tvog-Pj1l1bDqqlFPR&index=2&t=0s
🔴【GTA5】救急隊になる
https://www.youtube.com/watch?v=qbCoMPD8RT0&list=PLBcgqOO5IzwMvaNXUKrj-hNrQFMwA7Px1&index=2&t=0s
🔴【GTA5】ドクターヘリ
https://www.youtube.com/watch?v=l97o6Nm4GiA&list=PLBcgqOO5IzwMvaNXUKrj-hNrQFMwA7Px1&index=4
🔴【GTA5】消防士になる【LSRD】終
https://www.youtube.com/watch?v=xcpKHhNYUVE&list=PLBcgqOO5IzwOtd4TNnHZeNRB4oTgwSU6U&index=2&t=0s
🔴デトロイトビカムヒューマン!君の選択肢で未来が変わる!
https://www.youtube.com/watch?v=yxVdRd5zgx0&list=PLBcgqOO5IzwNWcNY7NbORO-ye3zl2n5L3&index=2&t=0s
🔴【GTA5】道路パトロール
https://www.youtube.com/watch?v=3Ybes14aUsI&list=PLBcgqOO5IzwOOtKWWhZT5kWhccfdT5cZi&index=2&t=0s
🔴【GTA5】ほぅのMOD紹介!
https://www.youtube.com/watch?v=3Ybes14aUsI&list=PLBcgqOO5IzwM_fo_C_o_TcUaR8E9GmK25&index=2&t=0s
🔴【GTA5】ほぅの生活
https://www.youtube.com/watch?v=qSFkADdPvbc&list=PLBcgqOO5IzwOTMn3Cofkx1PwQS0U-00C2&index=2&t=0s
🔴【GTA5】お金持ち生活・市民生活【新着順】
https://www.youtube.com/watch?v=iC00QHp0rQ4&list=PLBcgqOO5IzwMhfbmc6uEkrSa2uEIeLHQ9&index=2&t=0s
🔴【Cities: Skylines】ほぅ市長のまちづくり 【新着順】
https://www.youtube.com/watch?v=EjDKaXNaFgU&list=PLBcgqOO5IzwOIdeSyC8v31O9gxnOHuMuz&index=2&t=0s
🔴【緊急112】消防士になるシリーズ
https://www.youtube.com/watch?v=4z8YTTKPjNY&list=PLBcgqOO5IzwMDtHUagN2QBsqyk4Wl95Iw&index=2&t=0s
🔴【消防士FPS】一人称で消防士になる
https://www.youtube.com/watch?v=LUdkaw-JmrQ&list=PLBcgqOO5IzwOhbVd9xLaVvhX1c_WWJqg5&index=2&t=0s
🔴【PlanetCoaster】遊園地作ろうぜ!
https://www.youtube.com/watch?v=Z3pQ_B8AaiM&list=PLBcgqOO5IzwPRqRDESfnG6QJtqbIGL01j&index=2&t=0s
🔴挿入音源・Music
Music by Joakim Karud https://youtube.com/joakimkarud
🔴LSPDFR Plugin & Callout MODS download link
LSPDFRの撮影で使用しているプラグイン・コールアウト を紹介!
https://housan.info/lspdfr/lspdfr_plugin
Pz.Kpfw. VI Tiger II Ausf. B (H)
ダウンロード:https://www.gta5-mods.com/vehicles/pz-kpfw-vi-tiger-ii-ausf-b-h-add-on
🔴【ハッシュタグ】これらのワードでも検索できます。
#GTA5#GTA5警察#GTA5警察官になる#GTA5パトロール#GTA5LSPDFR#LSPDFR実況#ほぅ
![post-title](https://i.ytimg.com/vi/1PCJ0oOfl_I/hqdefault.jpg)
h index公式 在 meg Youtube 的最讚貼文
ずっと肌が荒れていたのでメイクをしていなかったのですが、ひさびさにメイクしてみました💄GRWM✨
📝 使用した商品 / products used 📝
アイコンの意味 / icon meanings
🎁 提供 / gifted
💝 ギフト / present
💸 購入 / purchased
💰 アフィリエイト / affiliate ※
※ リンクから購入すると私にバックがあります
※ i will make a commission if you purchase from these links
💰 キャンメイク
プランプリップケアスクラブ
01 クリア
¥594(税込)
公式 - https://www.make-up-solution.com/ec/pro/disp/1/4901008314044?sFlg=2
💸 キャンメイク
マーメイドスキンジェルUV
¥770(税込)
💰 Amazon - https://amzn.to/39vWdSS
💸 elf
Poreless Putty Primer
💰 iHerb - https://iherb.co/7kEW5dM
🎁 VELY VELY
H₂O水分アンプルファンデーション ライト
¥2,860(税込)
公式 - https://bit.ly/30IKgrn
💝 Awake
プットオンアハッピーフェイス
フィニッシング パウダー 9g
01 natural beige
¥3,300(税込) ※ ケースは別売り
公式 - https://bit.ly/30Isyo1 (パウダー)
プットオンアハッピーフェイス
フィニッシング パウダー ケース
¥1,100(税込)
公式 - https://bit.ly/3noZL1f (ケース)
🎁 VELY VELY
1.5mm 極細ブローペンシル アッシュB
¥880(税込)
公式 - https://bit.ly/3lpP7FF
💝 マリークワント
アイラッシュカーラー
¥1,100(税込)
公式 - https://www.mq-onlineshop.com/shopping/detail/?src=category&index=4200&cCd=4213&iCd=&cstp=02&istp=&item=1850101000000
💸 Charlotte Tilbury
Luxury Palette - Walk of No Shame
※ カートに入れるとTAX免除で£33.33
💰 Cult Beauty - https://go.magik.ly/ml/141pz/
💸 キャンメイク
クイックラッシュカーラー クリア
¥ 748(税込)
💰 Amazon - https://amzn.to/2UIoVLP
💸 キャンメイク
クイックラッシュカーラー セパレート ブラック
¥748(税込)
💰 Amazon - https://amzn.to/34zzjJF
💸 キャンメイク
ラスティングリキッドライナー
02 ビターチョコブラウン
¥990(税込)
💰 Amazon - https://amzn.to/2Sx5kwm
💸 キャンメイク
クリームチーク
20 ビターチョコレート
¥638(税込)
公式 - https://www.make-up-solution.com/ec/pro/disp/1/4901008313573?sFlg=2
💸 キャンメイク
ハイライターH
N01 シルキーベージュ
¥605(税込)
💰 Amazon - https://amzn.to/3dOWN3O
💸 エテュセ
リップエディション リッチスタイル
02 クリアバーガンディ
¥1,650(税込)
💰 Amazon - https://amzn.to/37Sd0Se
🎁 HERA
ROUGE HOLIC
100 SOUL PINK
¥3,490(税込)
💰 Qoo10 - https://m.qoo10.jp/su/784960940
📝 割引コードなど / discount codes etc. 📝
POPLENS - https://www.poplens.jp 紹介コード:P0368160
YES STYLE - https://ystyle.co/VkFy
look fantastic - https://www.lookfantastic.jp/referrals.list?applyCode=XWDV-R1
※ 3,500円以上の購入で700円OFF
『VIVI20』で20%OFF ※ 一部対象外あり
Magiclinks - https://www.magiclinks.com/rewards/referral/vivimeg/
Tube Buddy - https://www.Tubebuddy.com/ViviMeg
iHerb - https://www.iherb.com/?rcode=COE3037
Rebates - https://www.rebates.jp/referrer?referrerid=dcS7FMkmDFk%3D&src=iOS
☺️ サポートはこちらから ☺️
https://www.amazon.jp/hz/wishlist/ls/2YIAFFUJA2FTQ?ref_=wl_share
📝 SNS 📝
Instagram ▶︎ http://instagram.com/vivimegmakeup
Twitter ▶︎ https://twitter.com/vivimegmakeup
📝 contact 📝
email ▶︎ contactvivimegmakeup@gmail.com
📝 FTC Legal Disclaimer 📝
💰から始まるリンクはアフィリエイトになります。リンクから購入すると、私に報酬が入りますのでご了承ください。
some links above may be affiliate links, meaning i will make a small commission on sales you make through my link. they will be marked with a 💰 sign. this is at no extra cost to you, just one more way to support me and my channel! thank you in advance!
love meg x
![post-title](https://i.ytimg.com/vi/o1GQTcFo3kw/hqdefault.jpg)
h index公式 在 Simple formula to calculation of the h-index - GitHub Gist 的推薦與評價
https://github.com/kamyu104/LeetCode/blob/master/Python/h-index.py. :type citations: List[int]. :rtype: int. # Given an array of citations (each citation is ... ... <看更多>
h index公式 在 Impact factor 與h-index - 看板PhD - 批踢踢實業坊 的推薦與評價
(註:本來只是想簡短解釋一下什麼是 JCR...)
Journal Citation Reports (JCR) 是 Thomson Reuters 每年 6 月左右,
公布被其收錄於 Science Citation Index (SCI) 和 Social Sciences Citation
Index (SSCI) 中期刊的 Impact Factor (IF)。
什麼是 IF?舉例來說,一個期刊在 2014-2015 年度有 10 篇文章,共被引用了
100 次,則該期刊 IF 為 10。只用最近兩年的資料,據說是因為發明人 Eugene
Garfield 詳細分析過,發現這個時間帶是最穩定的。不過當然也引起有人說這
是鼓勵期刊炒短線,只發一些熱門領域的文章。
基本上,期刊 IF 越高,是越好。像 CNS,都在 30-40 左右。當然發在高 IF
的期刊是一種認可。
但是是否使用 IF 作為研究人員表現的評比指標有非常多的爭議。
比方說 PNAS 的總編輯 Verma 2015 年就寫了一篇叫 Impact, not impact factor
,來指出只看 IF 的邏輯謬誤。
https://www.ncbi.nlm.nih.gov/pubmed/26080449
再前些年,Science 的總編輯 Alberts 也寫了一篇 Impact factor distortions,
評擊學界一些扭曲的現象。
https://www.ncbi.nlm.nih.gov/pubmed/23687012
這些反思,起始於 2012 年底在舊金山開的美國細胞學年會,知名的科學家共同
發表了「舊金山研究評鑑宣言」 San Francisco Declaration on Research
Assessment (DORA),提出了一些改正學界歪風的建言。
其中詳細內容可以上學會的網站看看
https://www.ascb.org/dora/
總之,IF 最初的用意是用來幫助圖書館決定怎麼買期刊,並不是要評價個人。
基本上,期刊 IF 高低代表了期刊的水平 (不是絕對),但不絕對代表發在上面
的人的研究水平。
這種討論有很多,最著名的應該是 Hirsch 於 2005 年發在 PNAS 上面的一篇:
An index to quantify an individual's scientific research output
https://www.pnas.org/content/102/46/16569
他是個物理學家,簡單來說,他分析了物理領域裡面,厲害大頭的 h-index,
然後發現了一些規律。
h-index 就是一個人他發表的文章裡面,有幾篇至少被引用幾次。如果 h-index
是 10,那代表這個人他有 10 篇文章被引用了至少 10 次。
這個方法不去算期刊的文章平均 (也就是 IF),而是改算個人的「質」與「量」。
後來 Acuna 等人 (2012) 更計算了神經科學領域裡面的人的生涯 h-index
成長趨勢,進而發現了一個公式。
本文:Future impact: Predicting scientific success
https://www.nature.com/nature/journal/v489/n7415/full/489201a.html
他們更附上了一個計算器可以預測你將來的 h-index:
https://klab.smpp.northwestern.edu/h-index.html
不過這種方法沒有考慮到作者貢獻度,只要掛名就算,也不管第一作者還是,
只是隨便掛的。所以基本上爭議還是很多。最近有蠻多更詳細更公平的算法,
對期刊、作者排序、領域加權之類的,不過太複雜了,並不被廣泛接受。
關於 h-index 我甚至看過有些學校的升等寫明需要幾點,也看過一些部落格
透露出內線消息。
h-index 最低門檻:
(假設大部分都是自己的文章,第一或是通訊,不是那種亂掛的)
助理教授 >= 10
副教授 >= 20
教授 >= 40
我發現其實還蠻準的,就生物學領域來說。不信的話可以自己上 Google Scholar
玩玩看。有例外我們可以再來討論。
就申請助理教授來說,因為沒有通訊可掛,所以 5-6 篇自己一作加上 5-6 篇掛名,
才有辦法上到 10 點。可以給各位作為策略參考。
PS. 本來想直接貼 IF 的,結果打太多,只好自立標題了,IF 下一篇再貼上。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.107.60.147
※ 文章網址: https://www.ptt.cc/bbs/PhD/M.1466187806.A.16B.html
※ 編輯: biolenz (111.107.60.147), 06/18/2016 02:25:13
... <看更多>