Solidity
如何讓其他人的賬戶通過智能合約進行乙太幣交易?
我正在製定一份智能合約,其中涉及人們購買代幣以換取他們發送的乙太幣。它在 testrpc 中執行良好,因為所有帳戶都已解鎖,但我如何在 nodejs 中使用 web3 為主網路中的實際帳戶執行此操作。除了錢包地址之外,呼叫智能合約的這些應付功能還需要哪些欄位?任何程式碼片段或範例?任何幫助,將不勝感激。謝謝。
幾點幫助你區分問題,理清構想。
合約不能做任何普通使用者不能做的事情。例如,沒有任何程序可以讓契約花掉別人的錢。
區塊鏈上的所有操作都以“外部擁有的帳戶”“簽名”和交易開始。合約可以相互交談,但在有人發送簽名交易之前它們永遠不會做任何事情,因此這些“消息”屬於另一個類別(“消息”)。
簽名是由錢包使用密鑰完成的。沒有秘密,簽名是不可能的。但是任何獲得秘密(以某種方式)的人都可以代表另一個地址簽名。
當您使用 TestRPC 時,“the”使用者有 10 個不同的地址。他們是他的地址,而不是陌生人。他有秘鑰。TestRPC 讓您輕鬆解鎖賬戶並隨時隨地消費。如果沒有相應的秘密,您將無法組成第 11 個地址並從中消費。
對於網站,有兩種(通用)解決方案。
- 該網站可以創建帳戶並(安全地!)保留密鑰。這就像“代表”使用者開設帳戶一樣。考慮一下交易所是如何運作的。
- 瀏覽器可以依賴使用者的本地乙太坊或 MetaMask,因此(實際上)是使用者而不是 Web 伺服器簽署交易並將其發送到鏈。考慮 Mist 錢包合約。
希望能幫助到你。
您需要在瀏覽器上簽署交易。您可以手動執行此操作,也可以使用自動為您執行此操作的提供商。