# NRC-20

# 简述

token的接口标准

# 摘要

以下标准允许在智能合约中实施标记的标记API。 该标准提供了转移token的基本功能,并允许token被批准,以便他们可以由另一个在线第三方使用。

# 动机

标准接口可以让Nuls上的任何令牌被其他应用程序重新使用:从钱包到分散式交换。

# 规则

# Token

# 方法

注意: 调用者必须处理返回falsereturn boolean.调用者绝对不能假设返回false的情况不存在。

# name

返回令牌的名称 - 例如 "MyToken".

@View
public String name();

# symbol

返回令牌的符号 - 例如 "MT".

@View
public String symbol();

# decimals

返回令牌使用的小数位数

用于将程序返回的token数字除以10decimals次幂(10 ^ decimals),以获得其真实数量

  • 例如decimals = 2, 通过balanceOf方法获取一个用户的token余额,balance = 1230, 那么此用户的真实token数量为balance / (10 ^ 2) = balance / 100 = 12.3
@View
public int decimals();

# totalSupply

返回总令牌供应量。

@View
public BigInteger totalSupply();

# balanceOf

返回地址为“owner”的帐户余额。

@View
public BigInteger balanceOf(@Required Address owner);

# transfer

转移value的token数量到的地址to,并且必须触发TransferEvent事件。 如果from帐户余额没有足够的令牌来支出,该函数应该被revert。

创建新令牌的令牌合同应该在创建令牌时将from地址设置为null触发TransferEvent事件。

注意 0值的传输必须被视为正常传输并触发TransferEvent事件。

public boolean transfer(@Required Address to, @Required BigInteger value);

# transferFrom

从地址from发送数量为value的token到地址to,必须触发TransferEvent事件。

transferFrom方法用于代理转账,允许token拥有者授权其他用户代理自己的token。from帐户必须调用approve(@Required Address spender, @Required BigInteger value))授权给代理账户。

注意 0值的传输必须被视为正常传输并触发传输事件。

public boolean transferFrom(@Required Address from, @Required Address to, @Required BigInteger value);

# approve

transferFrom的授权机制,允许spender多次支配您的帐户,最高达value金额。 如果再次调用此函数,它将以value覆盖当前的余量。

public boolean approve(@Required Address spender, @Required BigInteger value);

# allowance

返回spender被允许从owner提取的金额。 Returns the amount which spender is still allowed to withdraw from owner.

@View
public BigInteger allowance(@Required Address owner, @Required Address spender);

# Events

# TransferEvent

当token被转移(包括0值),必须被触发。

创建新令牌的令牌合同应该在创建令牌时将from地址设置为null触发TransferEvent事件。

public TransferEvent(Address from, @Required Address to, @Required BigInteger value)

# ApprovalEvent

当任何成功调用approve(@Required Address spender, @Required BigInteger value)后,必须被触发。

public ApprovalEvent(@Required Address owner, @Required Address spender, @Required BigInteger value)

# Implementation

# Example implementations are available at

NRC20-Token

Last Updated: 2020/2/24 下午5:28:25