3

我是新来的。我在玩,想知道我是否可以让合约从一个账户获取以太币并将其转移到另一个账户。谢谢你

4

2 回答 2

3

简短的回答是你不能使用合约从另一个地址获取以太币。如果某种形式的这种情况是可能的,那么就很难防止恶意行为者对每个人这样做。

更长的答案是,在 Solidity 中,交易比交易更有利。记住这一点,你不应该试图从一个账户中获取以太币,而是你应该以这样一种方式设计合约,即所涉及的账户会将他们的分配从合约中提取出来。您可以执行以下两项操作之一:

  1. 用户 1 将以太币发送到自动将资金转发给用户 2 的合约中(尽管我不确定你为什么在这种情况下使用合约)。
  2. User1 向合约发送资金,并让 User2 在第二次交易中取回资金。

这两种方法都有效,但你不能让合约自动从第一个用户那里获取以太币。

有一些方法看似可行,但它是通过来自 User1 的预签名交易完成的,这很可能是您不想实现的目标。

于 2018-09-21T07:17:41.813 回答
2

除非您从中提取以太币的账户也是一个合约并且提供了一种允许以太币提取的方法,否则这是不可能的。合约不能自主地从外部拥有的账户中检索以太币。

另一种方法是将您的以太币转移到包装以太币(WETH)合约中,该合约为您提供以太币支持的 ERC20 代币,然后您可以访问approve()transferFrom()

于 2018-09-21T07:11:41.963 回答