在以太坊生态中,除了原生代币 ETH,还有数量庞大的 ERC-20 代币,这些代币的标准化使得它们可以在 DApp(去中心化应用)之间自由流转,当我们谈论 ERC-20 代币转账时,除了基础的 transfer 函数,还有一个至关重要且功能强大的函数——transferFrom,本文将深入浅出地解析 transferFrom 的工作原理、应用场景以及其背后的核心概念——allowance(授权)。

transferFrom 是什么?

transferFrom 是 ERC-20 代币标准中定义的一个核心函数,它的作用是从一个账户中转移代币,而这个转移操作是由第三个账户发起的

换句话说,它允许账户 A 授权账户 B 可以从 A 的账户中提取最多 X 数量的代币,之后,账户 B 就可以调用 transferFrom 函数,从账户 A 的钱包里转走不超过 X 数量的代币到账户 C。

函数签名如下:

function transferFrom(address from, address to, uint256 amount) public returns (bool success);
  • from:代币被转出的源地址(即授权方)。
  • to:代币被转入的目标地址。
  • amount:要转移的代币数量。

transferFrom 的工作原理:allowanceapprove

transferFrom 函数无法凭空工作,它依赖于 ERC-20 标准中的另一个核心概念:随机配图