You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NEAR AssemblyScript代币合约transfer与transferFrom差异及文档咨询

两个导出函数的概念区别

两个函数核心差异在调用权限来源和适用场景:

  • transfer(to: string, tokens: u64): boolean
    这是持币人主动转账的接口,调用者本身就是代币的持有者。调用时会直接扣除调用者账户下对应数量的代币,转入目标地址to的账户。调用仅需要满足「调用者账户余额≥转账数量tokens」的前提,不需要额外授权。
  • transferFrom(from: string, to: string, tokens: u64): boolean
    这是被授权方代持币人转账的接口,调用者不是from地址的持有者,而是from地址提前授权过的可操作账户。调用时会扣除from地址下对应数量的代币转入to地址,同时扣减from给调用者的可用授权额度。调用需要同时满足两个前提:① from账户余额≥转账数量tokens;② from给调用者的授权额度≥转账数量tokens。
    这类接口的典型使用场景是去中心化交易所、自动借贷等需要合约自动划扣用户代币的场景,用户不用每次交易都手动发起转账,只要提前给合约授权对应额度即可。
04.token-contract 智能合约简要说明

该合约是基于NEAR链用AssemblyScript编写的基础同质化代币(FT)实现,完成了标准FT的核心逻辑:

核心存储

  • totalSupply:记录代币的总发行量
  • balances:映射表,存储每个账户地址对应的持币数量
  • allowances:二维映射表,存储「持币地址-被授权地址」对应的可支配代币额度

对外核心接口

  • totalSupply(): u64:查询代币总发行量
  • balanceOf(account: string): u64:查询指定账户的持币余额
  • approve(spender: string, tokens: u64): boolean:持币人给指定地址spender授予最多tokens数量的代币操作权限
  • allowance(owner: string, spender: string): u64:查询持币人owner给被授权人spender的剩余可操作额度
  • transfer(to: string, tokens: u64): boolean:持币人主动向其他地址转账
  • transferFrom(from: string, to: string, tokens: u64): boolean:被授权方代持币人向其他地址转账

逻辑规则

所有转账、授权操作都会先做余额、额度的合法性校验,不满足条件的操作会直接返回失败,不会出现余额透支、超授权额度划扣的情况。

内容的提问来源于stack exchange,提问作者0xull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:06:05