掌握帳戶的好奇問題
我很好奇有些公司給每個客戶一個用於付款的 eth 地址以及如何將付款重定向到一個主帳戶?保存每個客戶的私鑰?有什麼例子嗎?我認為天然氣會被收取兩次?
您至少有兩種不同的選擇(有人可能還有其他想法):
1)為每個客戶創建一個新的私鑰和公鑰對 - 你持有私鑰。當他們支付某些東西時,他們會將 Eth 發送到該帳戶的地址。然後您可以檢查 Eth 是否存在並發送購買的產品並將 Eth 轉發到您想要的任何地方。
- 創建一個處理付款的智能合約。所有付款均由同一份契約接收,但您可以區分誰已付款以及支付了多少。您可以使用合約
payable
函式中的某些參數(例如支付 ID)或發件人的地址來區分付款。選項 1 實施起來非常簡單,但 gas 需要支付兩次(一次由買方支付,一次由您支付)。選項2稍微複雜一些,但更全面,更專業。使用選項 2,發送者只需支付一次 gas,然後所有的 Eth 都在智能合約中,當你想將其從合約中發送出去時,你只需要支付 gas。
通常的程序是採用管理付款的智能合約。你可以讓客戶向你的智能合約發送一些乙太坊和收據ID,這需要一個包含收據ID或其他東西的函式來唯一標識正在支付的購買。然後,智能合約可以記錄一條消息,您可以使用 javascript api 在中央管理軟體中輕鬆查詢該消息。如果需要或收到(可配置的)乙太坊門檻值,我建議您手動清除契約,這樣您就不必為每筆收款發起交易,因此不必每次都支付汽油費。
第二個變體是一個更老派的變體,通常不應用於乙太坊,因為使用智能合約解決這個任務更方便。它是一種已經在比特幣中發現和使用的變體,被稱為 HD(分層確定性)錢包。這個想法是您可以從單個值派生所有私鑰和公鑰,從而減少儲存空間和管理要求。與基本密鑰管理相比,使用此方法的另一個優點是能夠僅派生公鑰。這可以提高安全性,因為您不必在購買產品的(不安全的)Web 伺服器中儲存單個私鑰。反而,
HD-Wallets 的更多資訊: https ://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05.asciidoc#deterministic-seeded-wallets