Contract-Development

你如何以程式方式簽署交易?

  • October 9, 2019

想像一下您正在建構一個 dapp,使用者在您的網站上輸入接收者地址、值以及您所做的就是從該使用者的地址向接收者的地址發送值 ether。

我的問題是:

a)您是否讓使用者在輸入欄位中輸入他們的私鑰以便您可以簽署交易?

b)如果您讓他們在輸入欄位中鍵入私鑰,那不安全嗎?使用者如何確定您不會將他的私鑰保存在某個地方?

c) 如果你不問他私鑰,你將如何以程式方式簽署交易?

d) 如果您使用元遮罩,這很容易,但假設我們不使用元遮罩。有什麼選擇?

你總是需要一個私鑰來簽署基於 ECC 的加密貨幣的交易。如果您想在您的網站上提供此服務而不使用 metamask 等第三方工具(如果您堅持使用網站,我建議您使用),您必須要求提供私鑰。您必須確保私鑰不會通過 Internet 發送(即使您使用 SSL,這只是惡意行為)。這意味著您必須在客戶端執行交易簽名。我個人永遠不會使用要求我提供私鑰的網站。

您所做的就是從該使用者的地址向接收者的地址發送值 ether。

您不能這樣做,原因與我無法指示我的銀行從您的帳戶中收取付款的原因相同。

您的問題暗示了以伺服器為中心的思維。我不能 100% 確定你真正需要用乙太坊完成什麼,但我有理由相信有一個優雅的解決方案,但首先,你需要重新考慮一些關於流程、流程以及客戶端、伺服器和合約角色的假設.

如果我理解正確,你想要:

  1. Alice 選擇“a Bob”並從 Alice 自己的賬戶發送資金。
  2. 有成千上萬的愛麗絲,即許多使用者。

很公平。伺服器無需做任何事情來幫助進行此交易。

  1. Alice必須簽署**來自 Alice的所有交易,這應該沒問題,因為 Alice 需要選擇 Bob。
  2. 資金將通過區塊鏈從 Alice 的賬戶流向 Bob 的賬戶。在這種安排中,集中式伺服器沒有任何作用。

Alice 如何將交易拼湊在一起?使用者界面可以幫助解決這個問題。也許愛麗絲選擇了鮑勃一次,然後這是未來交易的預設設置?也許愛麗絲有一個聯繫人列表?這些是 UI 問題,伺服器可以為瀏覽器提供一個完整的交易,準備好讓她簽名。

等待。如果伺服器需要在批處理中執行所有內容怎麼辦?鑑於伺服器無法花費 Alice 的錢,解決方案是讓 Alice 將她的錢發送到伺服器,或者發送到伺服器控制下的合約。

例如,假設 Alice 希望伺服器在接下來的三個月內每周處理某項付款。她必須將資金轉移到伺服器可用於此目的的帳戶。付款將始終來自伺服器,由伺服器簽名。

通常,人們會希望區塊鏈記錄付款是代表愛麗絲進行的。這類事情是伺服器簽署的交易上下文中的“論據”。契約可以準確地確定需要哪些論據,準確地確定允許誰/什麼支付資金。究竟要保存哪些記錄,甚至可以作為 Alice 存款和取款的可信託管賬戶。

a)您是否讓使用者在輸入欄位中輸入他們的私鑰以便您可以簽署交易?

絕不

b)如果您讓他們在輸入欄位中鍵入私鑰,那不安全嗎?使用者如何確定您不會將他的私鑰保存在某個地方?

絕不

c) 如果你不問他私鑰,你將如何以程式方式簽署交易?

瀏覽器要麼發送使用者簽名的交易,要麼伺服器發送伺服器簽名的交易。

d) 如果您使用元遮罩,這很容易,但假設我們不使用元遮罩。有什麼選擇?

Web3 API 與 nodeJS 一起工作。API 可用於其他環境。在內心深處,可以使用 jsonRPC,但它“接近金屬”,所以不推薦,除非你正在製作錢包或其他東西並且需要接近。

Truffle 是智能合約級別的高級抽象最喜歡的工具。

希望能幫助到你。

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