NEAR生态下如何使用Assembly Script实现智能合约提现功能
NEAR 智能合约提现实现方案(near-sdk-as ^3.2.1)
前置操作
首先需要将资金转入智能合约,转入操作示意如下:
提现至发送方的实现方法
核心逻辑
在near-sdk-as ^3.2.1版本中,通过SDK提供的Promise转账API即可实现提现,步骤如下:
- 身份校验:先校验调用者是否具备提现权限,同时校验申请提现的金额不超过该用户可提现的额度
- 调用转账接口完成提现,参考代码如下:
import { Promise, Context, u128 } from "near-sdk-as"; // 对外暴露的提现接口 export function withdraw(amount: u128): boolean { const caller = Context.sender; // 此处替换为你自己的业务校验逻辑,比如查询caller对应的可提现余额是否大于等于amount // if (getUserWithdrawableBalance(caller) < amount) return false; // 执行转账,将amount数量的yoctoNEAR从合约账户转到调用者账户 Promise.new(caller).transfer(amount); return true; }
注意事项
- 金额单位为yoctoNEAR,1 NEAR = 10^24 yoctoNEAR,前端传参时需要做好单位转换
- 不要将合约账户的全部余额转出,需要预留至少0.01 NEAR作为后续操作的gas储备
- 若需要在转账完成后执行回调逻辑,可以在
transfer方法后链式调用.then()方法注册回调函数
操作界面示意如下:
内容的提问来源于stack exchange,提问作者Максим Щирый
相关产品推荐
相关产品推荐

