儲存乙太坊應用程序的使用登錄詳細資訊
我有一個使用乙太坊的 dApp 的想法,它需要使用者註冊和登錄系統。登錄後,使用者將觸發交易,智能合約部分將進入。但是,我是否應該將使用者詳細資訊儲存在中央數據庫或區塊鏈中?從我迄今為止的研究來看,使用區塊鏈作為數據庫的替代品似乎不是正確的思考方式,而且數據儲存也會變得非常昂貴。
我對 dApp/Ethereum 很陌生,所以很多這些概念對我來說仍然很模糊,所以任何幫助都將不勝感激。
我已經回答了一個可能對您的項目有影響的類似但不同的問題 - https://stackoverflow.com/questions/42520069/handling-user-profiles-in-ethereum-dapps/42543219#42543219
這顯然取決於您項目的目標和要求
使用像乙太坊這樣的平台的好處之一是你可以建立一個零點擊登錄。如果我們確定使用者的
web3.eth.accounts[0]
證明是使用者控制該帳戶地址的私鑰,那麼您將始終知道該使用者是有效的。使用者註冊
- 使用者擁有乙太坊賬戶。
- 註冊時以 HTML 表單收集使用者數據
- 使用者送出表單
- 將數據與 Eth 地址一起儲存在數據庫中
使用者驗證
- 使用者訪問網站
- web3js 獲取活躍的乙太坊賬戶
- AJAX 將 eth 地址傳遞給數據庫
- 如果我們辨識地址登錄個人
謝謝您的答复。請原諒我缺乏知識,但使用者如何擁有乙太坊帳戶?
沒關係,我們都以學習者的身份開始(並且永遠保持),提問是填補知識空白的最佳方式。
使用者可以通過使用 MetaMask、Parity 或 Mist 之類的東西創建一個乙太坊帳戶。
另外,當您提到將使用者憑據儲存在數據庫中時,您是指普通的關係數據庫嗎?
是的。在許多情況下,在乙太坊網路上儲存數據是有意義的,而在其他情況下則沒有意義。從您的問題的聲音來看,您的數據似乎是有關使用者的個人資訊,這可能最好儲存在傳統的關係數據庫中。
最後,為了讓 web3js 訪問這個活躍的乙太坊賬戶,使用者需要安裝 MetaMask 嗎?因為 AFAIK 它允許使用 web3js。再次道歉,如果這些問題是基本的查詢。
這取決於使用者使用的瀏覽器,如果他們使用的是 Chrome,則需要 MetaMask 或 Parity 擴展。如果您願意,您也可以開發自己的界面。
像 Mist 這樣的瀏覽器內置了 web3js。Parity 雖然不是使用者熟悉的瀏覽器,但也可以像使用原生 web3js 的瀏覽器一樣使用。
但主要原則是使用者有辦法將他們的私鑰安全地儲存在他們的機器上。其次,使用者可以方便地在乙太坊網路上進行交易。
但是,我仍然無法理解為什麼使用者需要一個乙太坊帳戶來簡單地執行 dApp。從傳統意義上講,使用者只需要註冊/登錄即可開始使用該應用程序。
因為在區塊鏈上,所有權限都來自使用者及其簽署的交易。而使用者交易只能由使用者的私鑰簽名。如果一切都是中心化的,那麼應用程序作為 dApp 毫無意義。
對於 dApp,我們是否假設該應用程序的普通使用者應該擁有 MetaMask 並使用它來創建他們的乙太坊帳戶?
不,它不一定是 MetaMask,它可以是為使用者做同樣事情的其他東西。但就像我上面所說的,如果你正在建構一個 dApp,那麼使用者需要能夠管理他們自己的密鑰。否則,即使你在區塊鏈上發生了功能,你建構的任何東西都不是去中心化的。
一個你需要問自己的問題。“我是為了在區塊鏈上建構一些東西而使用區塊鏈建構一些東西嗎?還是我的應用程序依賴於可程式區塊鏈的基本屬性?”