如何修改PaymentSplitter.sol为自动转账?

How to modify PaymentSplitter.sol to autopay?

我对 OpenZeppelin 的 paymentSplitter 代码做了一些小测试,我似乎没有找到让它自动付款的正确方法。得说我是这方面的菜鸟,可能我错过了一件愚蠢的事情

PaymentSplitter 合约使用 release() 函数,因此钱包可以支付 gas 费并索取付款,但这对我来说不值得,因为我希望收到的以太币在另外 2 个硬币上流动——并在

之后立即调用一个函数

所以我的疑惑可能很愚蠢但是,有没有办法使用合约余额来支付汽油费?然后,创建一个充值时执行release函数的事件?

由于我已经阅读了很多文档,但我仍然不了解,所以我喜欢一些简单的示例!

编辑:

今天我找到了这个视频:https://www.youtube.com/watch?v=IVq3gR2L5Iw

这应该可以正常工作吧?是否有任何提示可以为 3 笔交易设置正确的汽油价格?

is there a way to use the contract balance for gas fee?

没有。汽油费始终由交易发送方支付。您需要发件人地址的私钥才能发送交易。且合约地址私钥未知


您可以创建一个 off-chain 应用程序(在 JS、Python 等中),它将在预定义的情况下(cron、对其他事件的反应、. ..).使用 web3js 的示例:

const Web3 = require("web3");
const web3 = new Web3(providerUrl);
web3.eth.accounts.wallet.add(senderPrivateKey);
const contract = new web3.eth.Contract(abiJson, contractAddress);

const executeRelease = async () => {
    await contract.methods.release(contractFunctionParams).send({
        from: senderAddress
    });
}

// invoke when needed
executeRelease();

或者您可以使用现有的实现,例如 Chainlink Cron Jobs,它将为您执行交易(在 LINK 中进行的付款,Chainlink 服务的令牌)。