我尝试写点伪代码:
合约 A:
contract A {
function transfer_value () {
// 假设 10000 块高时,正好是你所设定的时间
if (block_hight > 10000) {
// 收到 value 大于 100 的转帐时,转 60 给 AccountB
if ( delta(self.balance) > 100 ) {
transfer(AccountB, 100);
}
}
}
}
合约 B:
contract B {
function transfer_value () {
// 假设 10000 块高时,正好是你所设定的时间
if (block_hight > 10000) {
// 收到 value 大于或等于 100 的转帐时,转 60 给 AccountC.
// 这里你只能知道帐户多了这么多,但却判断不了是谁转给你的。
// 这个逻辑你自己设计一下。
if ( delta(self.balance) >= 100 ) {
transfer(AccountC, 60);
}
}
}
}
autoExe 合约:
contract AutoExec {
uint public x;
function autoExec() public {
contractA. transfer_value();
contractB. transfer_value();
}
}
附:自动执行合约会在每个块都执行一次。