📜 [專欄新文章] Solidity Weekly #20
✍️ mingderwang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Metamask “Privacy Mode”
前一陣子,Metamask 與其他幾家 Ether 數位錢包公司,為了安全起見,決定改變叫用帳號的流程。舊的 Ðapp 網站需要改寫,才能搭配使用,這裏來做個介紹。
Breaking Change: No Accounts Exposed by Default,這篇文章有做完整的說明,從 2018 年 11 月 6日起,Metamask plugin 錢包與 Status,Mist,以及 ImToken 計畫一起提供一個新而且更安全的方法 (EIP-1102),來讀取錢包帳號的資料,例如它的 balance,交易歷史,以及一些敏感資料,未來錢包的 “Privacy Mode” 將預設為開啟。也就是在使用舊有的 Ðapp 網頁, Metamask “Privacy Mode” 必須是關閉,才能跟以前一樣使用,直接可讀取 Metamask 裡的帳號資料,進行交易。
對程式設計師而言,簡單講就是要叫用一個新的 ethereum.enable() function,它會 return 一個 Promise。如果 user 同意讓 Ðapp 使用他的帳號, 就會回傳 provider 結果,否則回傳 Error。這個 ethereum 物件,是 Metamask 在啟動時,會加到瀏覽器的 window 裡的,所以程式範例如下(僅供參考, 它還可以寫得更好);
import Web3 from ‘web3’
let web3;
if (typeof web3 !== ‘undefined’ && window.ethereum) {
const ethereum = window.ethereum;
ethereum.enable().then((account) => {
const defaultAccount = account[0]
console.log(defaultAccount);}).error(console.log);
web3 = new Web3(web3.currentProvider);// orweb3 = new Web3(ethereum);
} else {console.log('maybe user does not install metamask');
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider(“http://localhost:8545"));
}
v4.14.0 版以後的 Metamask,provider 的 window.ethereum 就開始支援 enable() function,只是預設值是關閉的。
如上圖,新版 MetaMask v5.0.x 設定裡也已經可以看到 Privacy Mode 的開關。目前版本的預設是關著的。以後新版將會預設成開。有些舊 ÐApp 網站沒搭配著修改,就無法使用。但為了相容起見,user 關掉 Privacy Mode,還是能正常使用,但這樣對使用者來講就不安全了。
這個標準定義在 EIP-1102,想深入了解底層的開發者可以參考。
相關 Links:
EIP-1102: How to prepare your dapp
Tutorial — How To Connect A JavaScript Front-End To A Smart Contract On Ethereum
Solidity Weekly #20 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
「javascript typeof undefined」的推薦目錄:
- 關於javascript typeof undefined 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於javascript typeof undefined 在 typeof !== "undefined" vs. != null - Stack Overflow 的評價
- 關於javascript typeof undefined 在 [譯]typeof 與instanceof 技巧- 簡易的動態型別檢查 的評價
- 關於javascript typeof undefined 在 JavaScript Data Types Demystifed 的評價
- 關於javascript typeof undefined 在 `typeof window === "undefined"` not simplified when ` - GitHub 的評價
javascript typeof undefined 在 [譯]typeof 與instanceof 技巧- 簡易的動態型別檢查 的推薦與評價
關於typeof vs instanceof在javascript 中,當我們需要確認一個值的型別時, ... (typeof undefined -> undefined); typeof 區分 object 和 function ... ... <看更多>
javascript typeof undefined 在 JavaScript Data Types Demystifed 的推薦與評價
JavaScript has six primitive types: number , string , boolean , null , undefined , and symbol . It also has a complex type called object . Was this tutorial ... ... <看更多>
javascript typeof undefined 在 typeof !== "undefined" vs. != null - Stack Overflow 的推薦與評價
... <看更多>
相關內容