Contract-Design

將私鑰發送到伺服器端

  • April 16, 2019

我正在嘗試使用 web3j 為我們的初創公司建構新的 Dapp 應用程序,我遇到了從伺服器端簽署交易的問題,因為我需要知道客戶端(錢包)的私鑰,發送網路上的私鑰。

所以問題是:有沒有人解決這個問題,或者我應該將所有程式碼保留在前端?

正如 Tjaden 所說:

你真的需要知道客戶的私鑰嗎?如果是這樣,它不是客戶端的私鑰。問題不在於通過網路發送密鑰,這不是 https 的問題,而是您和您的客戶之間的特權分離。

客戶有自己的簽名密鑰,在任何情況下都不應放棄。伺服器可能應該有一個或多個自己的簽名密鑰。

在我看來,伺服器不應試圖冒充客戶端,也不應要求他們提供簽名密鑰。您可以讓伺服器為客戶端或客戶端或客戶端做事,但不能作為客戶端。

考慮特權伺服器代表客戶端執行某些操作的功能草圖。客戶預計是重要的話題,但預計不會簽署。

function privilegedAction(address onBehalfOf) public onlyOwner {
 // use onBehalfOf instead of msg.sender to get things done. 
}

onlyOwner限制誰可以使用該功能。傳入的地址意味著無需向使用者詢問私鑰。

這使得伺服器/所有者將被允許執行的特權功能非常清楚,並且也非常清楚伺服器在其他msg.sender使用情況下沒有特權。

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/69688