Transactions

如果我有一個包含合約公共地址的私鑰怎麼辦?

  • June 26, 2021

如果我擁有通往合約所在公共地址的私鑰,我可以花掉合約擁有的錢嗎?(我意識到我有更好的機會連續數年被閃電擊中。)但是如果你以某種方式在程式碼中強制它作為測試,它真的會讓你花掉契約擁有的錢嗎?

或者乙太坊核心是否足夠嚴格,以至於它將它們視為兩個獨立的事物並且永遠不會發生?

根據我對黃皮書(YP) 的閱讀,的,您可以使用契約的資金。但正如您所注意到的,能夠找到合約私鑰的可能性極低。

在乙太坊中花錢是通過 CALL 操作碼完成的,向其傳遞參數,例如sender, recipient, value(被花費)。由於您擁有私鑰,您可以為交易創建一個有效的簽名,網路將接受該簽名。sender除了簽名的有效性外,沒有特別的檢查。以下是 YP 中的檢查,其他的很容易滿足(例如,帳戶的交易 nonce 很容易查到)。

  1. 交易是格式良好的 RLP,沒有額外的尾隨字節。
  2. 交易簽名有效。
  3. 交易 nonce 有效(相當於發送方賬戶的目前 nonce)。
  4. 氣體限制不小於交易使用的固有氣體 g0。
  5. 發件人帳戶餘額至少包含預付款所需的成本 v0。

2021 年 6 月編輯: EIP-3607已起草,因此無法使用私鑰花費合約資金:此類交易將被視為無效而被拒絕。

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