在以太坊中这种逻辑可能吗?

时间:2019-05-29 03:29:14

标签: ethereum solidity

假设这里是智能合约A和B。B已被部署并具有BuyService功能。用户需要调用此函数才能获得令牌服务。 A有足够的令牌(Erc20)。

  1. 用户将TX发送给A
  2. A呼叫B的BuyService
  3. B在A中接收令牌(erc20)并向用户提供服务

这种逻辑可行吗?如果没有,我该如何做A?我不想更改B中的代码。B非常笼统。请纠正我。

合同A {

ERC20 token = ERC20(0x...);
B b = B(0x...);

function helpMeBuyService() external {

    token.approve(b, 1000); 
    b.BuyService(msg.sender); 
}

}

1 个答案:

答案 0 :(得分:1)

您的验证码正确

pragma solidity ^0.5.0;

interface B {
    function BuyService(address receiver) external;
}

interface ERC20 {
    function approve(address receiver, uint256 amout) external;
}

contract A {
    ERC20 public token = ERC20(0x123);
    B public b = B(0x123);

    function helpMeBuyService() external {
        token.approve(address(b), 1000); 
        b.BuyService(msg.sender); 
    }
}