以太坊:如何将 ETH 交易自动拆分为 2 个其他交易

Posted

技术标签:

【中文标题】以太坊:如何将 ETH 交易自动拆分为 2 个其他交易【英文标题】:Ethereum : How to auto-split an ETH transaction into 2 other transactions 【发布时间】:2018-12-08 19:04:08 【问题描述】:

假设我有一个共享钱包,用于为我和我的兄弟收集以太币。我们共享这个钱包的 50%。

如果此钱包有一笔 ETH 交易,是否有一种自动方式可以自动将收到的以太币发送到我的个人钱包和我兄弟的钱包,而无需我们做任何特别的事情?

可以通过特殊的智能合约(带有回退)或任何其他方式来完成吗?

【问题讨论】:

至少,能做的就是将其50%的份额自动发送给我的兄弟,我把这个普通的钱包作为我的。因此它减少了交易和费用。有什么想法吗? 是的,这很简单。到目前为止你的代码在哪里,你在哪里卡住了? 这是一个程序员的问题:不是题外话。 fallback 是solidity 语言(ETH 智能合约)的一部分。如果有人有一些代码来处理这个问题,我会很高兴。谢谢 之所以跑题,是因为这是一个“请为我写代码”类型的问题。您似乎还没有尝试过任何东西。 感谢您的链接,他们将帮助我继续 【参考方案1】:

你可以部署这个合约(不要忘记更改地址)

当有人给你发送以太币时,他需要投入 100000 个 gas,这个额外的 gas 需要发送 2 笔交易:为你和你的兄弟

pragma solidity ^0.4.25;
contract Split 
    address public constant MY_ADDRESS = 0x5Ac652E32b8064000a4ab34aF0AE24E4966E309E;
    address public constant BRO_ADDRESS = 0x43CcDF0774813B6E14E64b18b34dE438B039663C;

    function () external payable 
        if (msg.value > 0) 
            // msg.value - received ethers
            MY_ADDRESS.transfer(msg.value / 2);
            // address(this).balance - contract balance after transaction to MY_ADDRESS (half of received ethers)  
            BRO_ADDRESS.transfer(address(this).balance);
        
    

【讨论】:

有没有办法传入收件人地址并允许经理更改佣金地址?我希望在收取 2% 佣金的情况下付款【参考方案2】:

是的。看看 Open Zeppelin 拆分付款: https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/payment/SplitPayment.sol

这使用声明,但您可以做类似的事情并使用智能合约后备来自动执行此操作。

【讨论】:

以上是关于以太坊:如何将 ETH 交易自动拆分为 2 个其他交易的主要内容,如果未能解决你的问题,请参考以下文章

什么是以太币/以太坊ETH?

什么是以太币/以太坊ETH?

以太坊 Gray Glacier 硬分叉升级

以太坊 Gray Glacier 硬分叉升级

以太坊随机数管理。错误随机数太低

eth入门之网络