>假设这里有智能合约A和B.B已经部署并具有BuyService功能。用户需要调用此函数才能使用令牌获取服务。A 有足够的tokens(Erc20)
.
- 用户将 TX 发送到 A
- A 呼叫 B 的购买服务
- 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);
}
}