Go-Ethereum
為我的網站使用者創建錢包
我正在開發一個使用乙太坊作為支付方式的應用程序,在應用程序中,使用者將擁有自己的餘額。但是有一個小問題,它與費用有關。
- 如果使用者存入資金,他顯然是在支付費用來匯款。這是可以理解的
- 現在在我的應用程序中,使用者也可以給他們的朋友資金。這就是問題出現的地方。
如果為每個新客戶創建一個錢包,不僅他們第一次存款時會收取費用,而且每次他們給別人錢時都會被收取費用。
可能的解決方案:
然後我想到讓每個使用者存入同一個乙太坊錢包,然後有一個單獨的數據庫來記錄每個使用者的總餘額有多少。這樣就可以在數據庫中進行餘額轉移,而無需在****乙太坊區塊鏈中實際轉移,直到使用者想要退出。
解決方案的問題:
我怎麼知道是哪個使用者匯款了?使用者可以先指定他們從哪個賬戶匯款,然後再匯款,但出於安全原因,我在這裡看到了漏洞。例如,如果一個壞人知道該人的乙太坊地址並假裝他正在發送資金並將資金記入他的賬戶怎麼辦。
還有在程式碼中使用數據變數的選項
transactionObject
:web3.eth.sendTransaction(transactionObject, myCallbackFunction);
在此選項中,如果
data
變數是隨機生成的程式碼,則可以輕鬆跟踪正在發生的事情。然而,並非所有的乙太坊線上錢包都提供data
在交易期間使用該變數的選項,這可能會限制可以使用我的應用程序的潛在客戶數量。問題:
我該如何解決上一個問題,即找到儲存使用者餘額的正確方法?我不確定是否有另一種方法可以完成這項工作,如果有人有解決方案,請告訴我。
使用數據欄位是這裡最合適的解決方案。我相信大多數標準錢包都支持數據欄位,有些錢包只是將其隱藏在高級菜單下。您可以提示您的使用者使用支持數據欄位的標準錢包,例如 MyEtherWallet。
處理這個問題的另一種(可能太複雜)方法是擁有一個乙太坊地址池。每次您向使用者尋求存款時,您都會生成一個地址並要求使用者存款到該特定地址。在提款期間,您使用一個有足夠資金的錢包,或組合多個錢包。