ERC3525插件
演示
ERC3525协议
ERC3525的标准接口
interface IERC3525 /* is IERC165, IERC721 */ {
// 查看代币小数位
function valueDecimals() external view returns (uint8);
// 查询指定代币余额
function balanceOf(uint256 _tokenId) external view returns (uint256);
// 查询指定代币所在槽
function slotOf(uint256 _tokenId) external view returns (uint256);
// 授权操作人管理指定代币的指定金额
function approve(
uint256 _tokenId,
address _operator,
uint256 _value
) external payable;
// 查询授权给操作人指定代币的金额
function allowance(uint256 _tokenId, address _operator)
external view returns (uint256);
// 代币给代币转账
function transferFrom(
uint256 _fromTokenId,
uint256 _toTokenId,
uint256 _value
) external payable;
// 从代币给用户转账
function transferFrom(
uint256 _fromTokenId,
address _to,
uint256 _value
) external payable returns (uint256);
event TransferValue(uint256 indexed _fromTokenId, uint256 indexed _toTokenId, uint256 _value);
event ApprovalValue(uint256 indexed _tokenId, address indexed _operator, uint256 _value);
event SlotChanged(uint256 indexed _tokenId, uint256 indexed _oldSlot, uint256 indexed _newSlot);
}
支持的插件大全
插件类型
| 插件名称 | 插件说明 |
---|---|---|
广告插件 | banner | banner图的管理 |
连接器 | connector | 基于低代码框架实现的app与官方api交互 |
内容插件 | content | 内容分类管理、内容管理和单页内容管理 |
地区插件 | district | 中国省市县乡的数据 |
文件插件 | file | 基于IPFS实现的文件上传下载 |
后台插件 | manager | 后台菜单管理、角色管理和管理员管理,实现RBAC鉴权 |
插件管理 | plugins | 对所有满足协议的插件进行管理 |
短信插件 | sms | 短信发送和记录查询,支持沙盒和阿里云短信 |
单点登录 | sso | 浏览器插件单点登录后,获取jwt |
用户插件 | user | 前台用户信息管理 |
Docker插件 | docker | Docker镜像、容器、网络和卷管理 |
钱包插件 | ETH | 实现以太坊节点交互的相关操作 |
钱包插件 | ERC20 | 实现ERC20协议交互的相关操作 |
钱包插件 | ERC721 | 实现ERC721协议交互的相关操作 |
钱包插件 | ERC115 | 实现ERC1155协议交互的相关操作 |
钱包插件 | ERC3525 | 实现ERC3525协议交互的相关操作 |
钱包插件 | TRON | 实现波场节点交互的相关操作 |
创建账户
请求URL: /erc3525/account
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
userId | string | 用户ID | 是 |
请求示例:
{
"userId": 888
}
返回示例:
{
"msg": "success",
"code": 0,
"data": {
"private": "9c6e5621e90f928fc6054bf95554d19086bd00f97064c735442cdfa0d7c3510b",
"public": "03a02c7b45a9b244c5cd79d9a1d1061e49dca36e2c414a053fb41bae8152099435",
"address": "0xaf93670b61eed69f81a6e5db393d1d5d13b09eea"
}
}
获取账户列表
请求URL: /erc3525/accounts
请求方式: GET
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
pageSize | string | 每页数量 | 是 |
pageNum | string | 页数 | 是 |
请求示例:
/erc3525/accounts?pageSize=10&pageNum=1
返回示例:
{
"msg": "success",
"code": 0,
"data": {
"records": [
{
"userId": 21,
"privateKey": "",
"publicKey": "03748ea1b350b2eeb8de409303c6d3556843ed2cabe50eabb4132b5b5188429fcf",
"address": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"create_time": "2024-08-04 14:12:51",
"update_time": "2024-08-04 14:12:51"
}
],
"total": 1
}
}
发布合约
请求URL: /erc3525/deploy
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 操作用户地址 | 是 |
name | string | 代币名称 | 是 |
symbol | string | 代币符号 | 是 |
decimal | string | 小数位 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"name": "NFT 3525",
"symbol": "555",
"decimal": "8"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x70983d88f51c15981e4e335a4e01be3aaa8a59a12f7d18f0583b23f59cc24cb3"
}
铸造NFT
请求URL: /erc3525/mint
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
account | string | 颁发给指定账户 | 是 |
slot | string | 所在槽 | 是 |
amount | string | 金额 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"account": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"slot": "666",
"amount": "10"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x58460f3081c2684902731d46394cec7eef766039f4f336bfbc1da0cf42fbff02"
}
安全转移NFT归属
请求URL: /erc3525/safeTransferFrom
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
sender | string | 发送方地址 | 是 |
receiver | string | 接收方地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x34d42f9f770bcd711862ae6d5fb18db9d171aa20",
"sender": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"receiver": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"tokenId": "666"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x3cee2d328448870cc1a635de7a9b8d211068a011c04d003e9e08894196828930"
}
转移NFT归属
请求URL: /erc3525/transferFrom
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
sender | string | 发送方地址 | 是 |
receiver | string | 接收方地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"to": "0x34d42f9f770bcd711862ae6d5fb18db9d171aa20",
"sender": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"receiver": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"tokenId": "666"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x38bee6f5dce30c0e6a1cd604682e9410c65238568176158d6ac6a0b728797cc8"
}
从token转移NFT给用户
请求URL: /erc3525/transferFromTokenToAddress
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
tokenId | string | NFT ID | 是 |
receiver | string | 接收方地址 | 是 |
amount | string | 金额 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"tokenId": "3",
"receiver": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"amount": "2"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x9ddd7d97cd29fd3d2641add7bb9a9bb62c6a1c20702a1fd8b57c4914135e846a"
}
从token转移NFT给token
请求URL: /erc3525/transferFromTokenToToken
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
fromTokenId | 发出NFT ID | NFT ID | 是 |
toTokenId | 接收NFT ID | 接收方地址 | 是 |
amount | string | 金额 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"fromTokenId": "3",
"toTokenId": "4",
"amount": "2"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0xe3d9fcc9be53967b8c2e94d67eabd82f038f07f49bb1c34409bc183820c2e3f3"
}
授权操作人管理指定NFT
请求URL: /erc3525/approve
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
operator | string | 操作人地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"operator": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"tokenId": "3"
}
注: 如果取消授权,只需operator
参数传"0x0000000000000000000000000000000000000000"
返回示例:
{
"msg": "success",
"code": 0,
"data": "0xbabff430ed05379caf050f0f8948b7635c775bd436cf51b8418e110bced5f0ea"
}
授权/取消操作人管理自己所有NFT
请求URL: /erc3525/setApprovalForAll
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
operator | string | 操作人 | 是 |
approved | string | 全部授权(yes)全部取消(no) | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"operator": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"approved": "no"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x1f89e9a9ee195269491157201f8c9096effad1918e3539faa37ee87460106756"
}
查询操作人是否允许操作指定NFT ID
请求URL: /erc3525/allowance
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
operator | string | 操作人 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"operator": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"tokenId": "3"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 0
}
查询账户下NFT数量
请求URL: /erc3525/balanceOf
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
account | string | 账户地址 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"account": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 1
}
查询指定NFT下的金额
请求URL: /erc3525/balanceOfTokenId
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"tokenId": "3"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 6
}
查询NFT ID被授权操作人地址
请求URL: /erc3525/getApproved
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"tokenId": "3"
}
注: 批量授权操作,无法用该方法查询
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4"
}
查询拥有者是否授权操作者管理所有NFT
请求URL: /erc3525/isApprovedForAll
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
owner | string | NFT拥有者 | 是 |
operator | string | NFT操作者 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x34d42f9f770bcd711862ae6d5fb18db9d171aa20",
"owner": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"operator": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": true
}
查询合约名称
请求URL: /erc3525/name
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "NFT 3525"
}
查询合约管理员
请求URL: /erc3525/owner
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x9999f79A9Ae77b8454b7C73c9C06532ab4f2d1d9"
}
查询token ID的拥有者
请求URL: /erc3525/ownerOf
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"tokenId": "3"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "0x9999f79A9Ae77b8454b7C73c9C06532ab4f2d1d9"
}
查询token ID所在槽
请求URL: /erc3525/slotOf
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"tokenId": "3"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 666
}
查询槽的 URI
请求URL: /erc3525/slotURI
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
slot | string | 槽 ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"slot": "3"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": ""
}
查询合约符号
请求URL: /erc3525/symbol
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "555"
}
根据数组索引查找 token
请求URL: /erc3525/tokenByIndex
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
index | string | 数据索引 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"index": "0"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 1
}
根据数组索引查找用户token
请求URL: /erc3525/tokenOfOwnerByIndex
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
owner | string | token拥有者 | 是 |
index | string | 数据索引 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"owner": "0x8B665E3DF1ECBAC264cFEc3622Cb9049a62bD4e4",
"index": "1"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 2
}
查询NFT ID对应的URI
请求URL: /erc3525/tokenURI
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
tokenId | string | NFT ID | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e",
"tokenId": "1"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": "<svg width=\"800\" height=\"1126\"
style=\"background-image: url(https://www.biwow.com/download/bg.png);
background-size: 800px 1126px; background-repeat: no-repeat;\"
xmlns=\"http://www.w3.org/2000/svg\"><text fill=\"#000\" x=\"400\"
y=\"300\" text-anchor=\"middle\" font-size=\"50\">NFT 3525</text>
<text fill=\"#000\" x=\"150\" y=\"540\" font-size=\"24\">Slot: 666</text>
<text fill=\"#000\" x=\"150\" y=\"640\" font-size=\"24\">TokeId: 1</text>
<text fill=\"#000\" x=\"150\" y=\"740\" font-size=\"24\">Balance: 10</text></svg>"
}
查询总发行量
请求URL: /erc3525/totalSupply
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 4
}
查询小数位
请求URL: /erc3525/valueDecimals
请求方式: POST
请求参数:
参数名 | 类型 | 说明 | 是否必填 |
---|---|---|---|
from | string | 发起账户地址 | 是 |
to | string | 代币合约地址 | 是 |
请求示例:
{
"from": "0x9999f79a9ae77b8454b7c73c9c06532ab4f2d1d9",
"to": "0x5bfe77e5f453cb3993e62d6e3f471e33809df58e"
}
返回示例:
{
"msg": "success",
"code": 0,
"data": 4
}