wrap.near 合约如何在 NEAR 协议中运行?

How does wrap.near contract operate in NEAR Protocol?

wNEAR 似乎是由 wrap.near 合同烘焙的,但它是如何工作的?

wrap.near 持有 w-near contract, which is FT [fungible token] implementation based on NEP-141 标准。

这个想法很简单,你发送本地 NEAR 代币,合约在本地存储中跟踪发送者账户的余额,并且有一个反向操作允许你指示合约发回 NEAR 代币.

此 FT 始终匹配原生 NEAR 令牌 1:1。名称中的“Wrapped”前缀(wrapped NEAR 或 wNEAR)表示它只是将原生令牌转换为 FT 令牌。它的创建是为了与 Rainbow Bridge (Aurora) 接口兼容,该接口允许跨 NEAR 网络 <> 以太坊网络传输 FT(通过将代币锁定在一个网络上的合约中并从部署在另一个网络)。

那么回到w-near合约的技术实现,可以发现三个核心方法:

  • near_deposit 期望 NEAR 原生代币附加到函数调用,这些附加代币将存入 wrap.near 帐户,作为交换,合约实施将在存储中保存一条记录,这些记录令牌属于发送它们的帐户
  • near_withdraw 扣除为调用此函数的帐户记录的代币数量,并将原生 NEAR 代币转账发送回调用者
  • ft_transfer(由near-sdk-rs helper 实现)通过更新合约存储中的记录来虚拟转移 wNEAR FT 代币。注意:这里不涉及本地转账,因此交易将从代币发送方转到 wrap.near 合约,这将相应地更新发送方和接收方的余额,接收方账户永远不会收到本地 NEAR 调用或NEAR 代币(直到 he/she 调用 near_withdraw