使用者通過基於 web3j 的中間 API 與區塊鏈互動時如何簽署乙太坊交易?
我們有一個私有的乙太坊網路在我們的測試平台上執行。並且基於 web3j (Java) API 向區塊鏈上部署的智能合約公開了各種功能。API 使用自己的乙太坊身份/憑證連接到區塊鏈。
前端應用程序(正在開發中)將通過基於 web3j 的 API 與區塊鏈進行互動。我們還可以在前端應用程序中使用 Metamask 進行使用者錢包管理。
我們目前擔心的是,目前向乙太坊區塊鏈發起的所有交易都是使用 API 的身份(智能合約中的msg.sender或tx.origin)發送的。有沒有一種方法,最終使用者不必將他們的憑據傳遞給 API,而只需對交易進行身份驗證/授權/簽名,API 就可以代表使用者將交易送出給乙太坊區塊鏈?
我們在這個方向上非常新,希望能提供任何幫助。
先感謝您!
將交易發送到乙太坊網路時,您必須對交易進行簽名,不接受**未簽名的交易。**簽名是通過私鑰完成的,私鑰保存在您的網路網關節點(乙太坊節點)內。
因此,如果您使用
web3
,它將通過 RPC (TCP) API 聯繫乙太坊節點,並要求通過與給定相關的使用者私鑰簽署交易address
。私鑰的使用受密碼保護,因此您必須web3.unlockAccount()
在發送任何交易之前通過提供密碼解鎖它以供使用 ( )。TLDR:您將始終必須傳遞私有憑據才能發送交易。您的問題的一個可能解決方案是創建一個您通過智能合約管理的輔助使用者系統。
解釋
我所說的“輔助使用者系統”是一個基本的使用者管理系統,可以在任何平台上使用,它不使用乙太坊使用者和帳戶系統作為基礎。因此,基本上,創建一個獨立平台,並在您平台上的使用者與乙太坊平台上的使用者和帳戶之間建立連結**。
我的另一件事是在與乙太坊平台互動時使用單個使用者(地址)。該地址應屬於平台,應用於與智能合約互動。
**智能合約將管理這些新類型的賬戶(具有
struct
儲存乙太坊地址屬性的賬戶)。