如何使合约从账户中获取以太币

时间:2018-09-21 04:10:52

标签: ethereum solidity smartcontracts ether

我是新手。我当时在玩耍,想知道我是否可以订立合同从一个帐户中提取以太币并将其转移到另一个帐户中。 谢谢

2 个答案:

答案 0 :(得分:3)

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

更长的答案是,在Solidity中,对pull transactions rather than to push them更有利。请牢记这一点,您不应尝试从一个帐户中获取以太币,而应设计合同,以使所涉及的帐户将其分配从合同中取出。您可以执行以下两项操作之一:

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

这两种方法都可以,但是您不能让合同自动从第一个用户那里获取以太币。

在某些方面看似可行,但这是通过User1的预签名交易完成的,这很可能是您未尝试实现的目标。

答案 1 :(得分:2)

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

另一种选择是将您的以太币移至包裹的以太币(WETH)合约,该合约为您提供了以太坊支持的ERC20令牌,然后您可以访问approve()transferFrom()