首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核准-合同之间的转移模式

核准-合同之间的转移模式
EN

Ethereum用户
提问于 2019-07-31 18:46:13
回答 1查看 777关注 0票数 3

批准合同a代表合同b使用令牌的一般流程是什么?一个成功实现这一点的充分的功能实现是什么样子的?

例如,让我们考虑下面的场景。我创建了一个标准的ERC20令牌,并将令牌提供给合同a。现在我希望允许合同b代表合同a使用ERC20令牌。

EN

回答 1

Ethereum用户

发布于 2019-07-31 21:27:19

如果合同A拥有令牌,并且希望合同B花费,那么合同A必须使用approve合同B,合同B必须与transferFrom一起使用。

代码语言:javascript
复制
contract A {
  ERC20 token; // <--- generic ERC20 token contract
  B seller;    // <--- ticket seller accepts ERC20 tokens

  event TicketPurchased(uint);

  function buyTicket(uint amount) public {

    // Contract A approves the seller to transfer tokens
    token.approve(address(seller), amount);

    // Call seller for it to transfer tokens
    uint ticketId = seller.buyTicket(amount);

    // Generate event with ticket id to capture from UI
    emit TicketPurchased(ticketId);
  }
}

contract B {
  address wallet;   // <--- wallet where tokens from purchases will be moved to
  ERC20 token;      // <--- generic erc20 token

  function buyTicket(uint amount) public returns (uint) {

    // Transfer tokens from the caller to wallet
    // (here msg.sender will be Contract A)
    token.transferFrom(msg.sender, wallet, amount);

    return 1;   // <--- ticket id
  }
}
票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/73493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档