OASIS.ASSET

本文档描述了OASIS.ASSET的设计理念和用途

OASIS.ASSET 是THE OASIS提供的标准化资产合约,主要包含以下功能:

  • 创建、发行、管理链上数字资产,包含FT(同质化通证)与NFT(非同质化通证);

  • 添加可转移资产与可接受外部资产的映射规则;

  • 冻结与释放资产(由OASIS.MAIN 跨合约调用)。

可转移资产

「可转移资产」指由当前合约发行的,允许转出到其他合约的NFT资产。由资产symbol唯一确定。

可接受外部资产

「可接受外部资产」指当前合约能够接受的外部资产。用户须要指定接受资产的来源symbol及来源「世界名」,以及转移到当前合约后的新symbol 。这样设计的目的是防止内外部资产symbol冲突。

上述映射规则可抽象为:(origin_symbol, world_name) => new_symbol该映射关系是多对多的,这使得用户能够在转移过程中自由选择需要映射的目标资产。

转移权限定制

OASIS.ASSET 合约提供了canaccept 方法,由OASIS.MAIN 在执行跨合约NFT转移时调用。具体逻辑不设限制,可由应用方自行定制是否接受特定资产、玩家或世界的条件和逻辑。例如可建立针对世界、资产或用户的黑白名单,以及控制某类资产的转移量等。

接口描述

数据表

account

账户余额表

字段名

类型

含义

balance

asset

资产余额

stat

资产信息表,用于记录资产当前的状态数据

字段名

类型

含义

issuer

address

发行方

supply

uint256

当前流通量

issued

uint256

已发行量

symbol

string

资产类型

pubkey

public_key

用于验签的公钥

max_supply

asset

资产最大发行量。若为无限量则为0

infinite

boolean

是否为无限量发行

type

bit

0 为FT,1 为NFT

exstat

外部资产信息表,用于记录外部资产的状态数据

字段名

类型

含义

supply

asset

当前流通量

token

NFT数据表,记录所有NFT元数据与签名

字段名

类型

含义

id

uint64

内部自增ID

uuid

uint256

NFT全局唯一标识

uri

string

遵循RFC3986的统一资源描述符

owner

address

NFT持有者地址

symbol

string

NFT符号

sign

string

签名

transferable_nft

可转移的NFT资产

字段名

类型

含义

sym_cde

string

NFT符号

acceptable_ext_nft

可接受的外部NFT资产

字段名

类型

含义

new_sym_code

string

NFT转入后的新符号

ori_sym_code

string

NFT的原始符号

world_name

string

NFT来源世界名

一个new_sym_code只能关联一个(ori_sym_code, world_name),但(ori_sym_code, world_name)可以被多个new_sym_code 关联。

合约方法

该部分仅列出需要严格遵守接口标准的合约方法。

transfer

实现FT资产交易

参数名

类型

含义

from

address

付款方地址

to

address

收款方地址

quantity

uint256

发送金额

symbol

string

资产符号

memo

string

备忘

transfernfts

实现NFT资产交易

参数名

类型

含义

from

address

发送方地址

to

address

接收方地址

uuids

array<uint256>

NFT UUID列表

memo

string

备忘

canaccept

应用方自定义的转移逻辑。若需要中断转移,则抛出错误即可。

参数名

类型

含义

user

address

NFT持有者地址

from_world

string

来源世界名

to_world

string

去向世界名

uuids

array<uint256>

NFT UUID列表

symbol

string

NFT符号

freeze

冻结NFT资产。该方法仅由OASIS.MAIN 合约调用。应当检查调用方是否为预设的OASIS.MAIN 合约地址。

参数名

类型

含义

owner

address

持有者地址

uuid

uint256

NFT UUID

external

bit

0 为内部资产,1 为外来资产

release

释放NFT资产。该方法仅由OASIS.MAIN 合约调用。应当检查调用方是否为预设的OASIS.MAIN 合约地址。

参数名

类型

含义

owner

address

持有者地址

uuid

uint256

NFT UUID

uri

string

NFT URI

sym_code

string

NFT符号

sign

signature

NFT发行方签名

external

bit

0 为内部资产,1 为外来资产