这种逻辑在以太坊中是否可行

  • 本文关键字:是否 ethereum solidity
  • 更新时间 :
  • 英文 :


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

  1. 用户将 TX 发送到 A
  2. A 呼叫 B 的购买服务
  3. B 接收 A 中的tokens(erc20)并向用户提供服务

这个逻辑可能吗?如果没有,我怎样才能做 A?我不想更改 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); 
    }
}

最新更新