我刚接触到聪明的合同,找了很多,但希望这里有人能帮我。
我会尽我所能解释。我在用几个钻机开采埃瑟姆。
每个单独的钻机自动发送ETH到一个特定的ETH地址通过池。所以现在我有多个(30+) ETH地址来接收ETH。非常令人沮丧的是,检查每个地址,并将ETH发送到我的主要帐户。
有没有一种方式,我可以自动发送ETH从每个帐户到我的主帐户与一个聪明的合同(稳固)?
假设;address 1接收0.1ETH,自动发送(在事务进入后立即)0.1ETH到主ETH地址。
地址接收不同数量的ETH、0.1ETH、0.05 ETH等。无论发送到挖掘地址多少,都必须转移到主帐户。
我希望有人能帮我解决这个问题。
编辑:示例
0x0000ADRESS 1: 0.1ETH
0x0000ADRESS 2: 0.3ETH
0x0000ADRESS 3: 0.2ETH
0x0000ADRESS 4: 0.1ETH
(为上面的每个地址写一份智能合同,当ETH位于上面的地址时,将ETH转到MAIN)
0x0000MAINADRESS: 0.7ETH
发布于 2018-04-13 06:59:56
它不像你想象的那样起作用,这使得直接用一些不会导致长时间学习曲线的建议来回答是一种挑战。
在EOA中,您有外部拥有的帐户(EOA) (钱包)和合同,它们都由地址表示,在智能契约语言中几乎无法区分。除非有人签署了EOA的交易,否则链上不会发生任何事情。合同收到消息时运行代码。
特别是,任何EOA或合同都不能从其他人的账户中花钱。合同收到的钱,并发送它就像一个钱包。所以,我们不能签订一份从地址中提取钱的合同。相反,我们可以在各种帐户的控制下部署合同,不同的帐户可以签署交易来启动业务,但这将如何实现您的目标呢?看到问题了吗?
你的目标可以通过一个合理简单的集线器和辐式设计来实现,而池付款则是Spokes的合同。辐条将收到的所有资金转发给集线器。Hub允许特权用户(您)提取资金,集线器让我们生成新的Spokes,检查辐条列表,等等。
我认为示例代码可能只是引导您进入一个出乎意料的复杂项目,因为与当前的工作方式相比,您必须习惯于一些有点陌生的东西。
希望能帮上忙。
发布于 2018-04-13 12:01:54
据我所知,我们不能简单地转发合同中收到的其他人:
要在合同中接收以太,您将需要一个没有对数值和返回值的函数,即标记为应付款的回退函数。但是(如文献http://solidity.readthedocs.io/en/v0.4.21/contracts.html所述)当以太被发送时,这种回退功能受到2300个气体单位的限制,而发送醚的操作只会消耗更多的气体(同上)。
因此,被派来的以赛人将不得不留在接收他们的合同中。你需要一份包含接收合同清单的监督合同。您将需要接收合同中的一个函数(如transferEthersUp()),该函数将将用户转移到监督合同。此外,您还需要监督契约中的一个函数(如collectEthers()),它将迭代所有接收合同并调用transferEthersUp()函数。
要收集以太,只需定期调用collectEthers()。
当然,还有一些重要的安全问题需要实现:检查只有监督合同才能调用transferEthersUp(),检查只有合同所有者可以调用collectEthers()。
不幸的是,这个收集服务会花费你一些额外的汽油。
https://ethereum.stackexchange.com/questions/45571
复制