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

Ethereum 这种逻辑在以太坊中可能吗?,ethereum,solidity,Ethereum,Solidity,假设这里有smartcontract A和B。B已经部署并具有BuyService功能。用户需要调用此函数才能使用令牌获取服务。A有足够的令牌(Erc20) 用户发送TX到 A呼叫B的付费服务 B在A中接收令牌(erc20),并向用户提供服务 这种逻辑可能吗?如果没有,我怎样才能作出决定?我不想更改B中的代码。B非常通用。请纠正我 contract A { ERC20 token = ERC20(0x...); B b = B(0x...); function help

假设这里有smartcontract A和B。B已经部署并具有BuyService功能。用户需要调用此函数才能使用令牌获取服务。A有足够的
令牌(Erc20)

  • 用户发送TX到
  • A呼叫B的付费服务
  • B在A中接收
    令牌(erc20)
    ,并向用户提供服务
  • 这种逻辑可能吗?如果没有,我怎样才能作出决定?我不想更改B中的代码。B非常通用。请纠正我

    contract A {
        ERC20 token = ERC20(0x...);
        B b = B(0x...);
    
        function helpMeBuyService() external {
    
            token.approve(b, 1000); 
            b.BuyService(msg.sender); 
        }
    }
    
    你的代码是正确的

    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); 
        }
    }