Ethereum 如何使合同从帐户中提取

Ethereum 如何使合同从帐户中提取,ethereum,solidity,smartcontracts,ether,Ethereum,Solidity,Smartcontracts,Ether,我是刚接触坚实的人。我在四处游荡,想知道我是否可以从一个帐户签一份合同,然后把它转到另一个帐户。 谢谢除非您从中检索乙醚的帐户也是合同,并且提供了允许乙醚提取的方法,否则这是不可能的。合同无法从外部拥有的帐户自动检索乙醚 另一种方法是将以太移动到包装的以太(WETH)合同,该合同为您提供一个以太支持的ERC20令牌,然后您可以访问approve()和transferFrom()简而言之,您不能使用合同从另一个地址获取以太。如果某种形式的这种行为是可能的,那么就很难防止恶意行为者对每个人都这样做

我是刚接触坚实的人。我在四处游荡,想知道我是否可以从一个帐户签一份合同,然后把它转到另一个帐户。
谢谢

除非您从中检索乙醚的帐户也是合同,并且提供了允许乙醚提取的方法,否则这是不可能的。合同无法从外部拥有的帐户自动检索乙醚


另一种方法是将以太移动到包装的以太(WETH)合同,该合同为您提供一个以太支持的ERC20令牌,然后您可以访问
approve()
transferFrom()

简而言之,您不能使用合同从另一个地址获取以太。如果某种形式的这种行为是可能的,那么就很难防止恶意行为者对每个人都这样做

较长的答案是,在坚固性方面,它更有利于发展。记住这一点,您不应该试图从一个帐户获取乙醚,而是应该以这样一种方式设计合同,即所涉及的帐户将从合同中提取他们的分配。您可以执行以下两种操作之一:

  • User1将以太发送到一个合同中,该合同自动将资金转发给User2(尽管我不确定在这种情况下为什么要使用合同)
  • User1向合同发送资金,并让User2在第二次交易中检索资金 这两种方法都可以,但您不能让契约自动从第一个用户获取以太网


    这似乎是有可能的,但这是通过User1的预签名交易完成的,这很可能是您不想实现的。

    也许这可以给您一些想法@ZulhilmiZainudin该链接很有帮助,谢谢。但我不希望我的任何合同存储以太值。谢谢你的回答。你们能告诉我更多关于预签名交易的情况吗?请看这篇文章。其基本思想是,事务只是一条经过签名的消息,被广播到ETH网络。预签名事务是尚未向网络广播的同一事务。