New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

sherry-test-js

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sherry-test-js

Javascript SDK for the APENFT

  • 0.2.1
  • unpublished
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

SDK for APENFT marketplace base on TRON blockchain and TronLink wallet

开发者指南

安装

npm install apenft-js-tron

sdk 依赖 TronLink 钱包进行链上操作

在浏览器环境下直接使用 TronLink 注入到 window.tronWeb

在 node 环境下使用,还需安装 tronweb,

npm install tronweb

配置

初始化 SDK
/* 0. 引入SDK */
  
import sdk from "apenft-js-tron";
  
const { APENFTOrders, APENFTQuery, Network, AssetFactory } = sdk;
  
/* 1. 初始化tronWeb */
  
/* 浏览器环境下 */
  
const { tronWeb } = window;
  
/* node环境下,配置privateKey可以避免弹窗签名 */
  
const tronWeb = new TronWeb({
  fullHost: "https://api.shasta.trongrid.io",
  privateKey: "xxxxx-xxxx-xxxxx-xxxxx-xxxxx",
  headers: { "TRON-PRO-API-KEY": "xxxxx-xxxx-xxxxx-xxxxx-xxxxx" },
});
  
/* 2. 初始化SDK */
  
const networkName = Network.Shasta;
const sdk_orders = new APENFTOrders(tronWeb, { networkName });
// 查询初始化
const sdk_query = new APENFTQuery(tronWeb, { networkName });

资产

/* 如需创建资产,可通过以下两种方法获取工厂类 */
  
/* 从sdk_orders中获取工厂类 */
  
const sdk_fab = sdk_orders.assetFactory
  
/* new AssetFactory */
  
const sdk_fab = new AssetFactory(tronWeb, { networkName })
  
/* 然后就可以 */
  
sdk_fab.createAsset721(...); // 创建721资产合约
sdk_fab.mint721(...);        // 铸造721资产
创建合约

sdk_fab.createAsset721(name,symbol,baseUrl,options)

方法说明

/**
 * 部署ERC721合约,返回合约地址
 * @param {string} name - 合约名称
 * @param {string} symbol - 合约符号
 * @param {string} baseUrl - 合约metadata的baseUrl
 * @param {object} [options]  - 可选参数,参考 https://cn.developers.tron.network/reference/tronweb-createsmartcontract
 * @returns {Promise<{txHash,txSend}>}  Promise对象,包括交易hash和广播事件接受器,可以通过await txSend获取创建的合约地址
 */
async createAsset721(name: string, symbol: string, baseUrl: string, options?: any)

方法使用示例

const sdk_fab = ...
const createRes = await sdk_fab.createAsset721(
    'MyNFTSymbol',  // Symbol
    'MyNFTName',    // Name
    'https://ipfs.io/ipfs/QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/'  // metadata json url
)
const output = await createRes.txSend.catch((err) => console.log(err))
// 得到新创建的合约地址
const nftContract = output.contract_address
铸造 NFT

sdk_fab.mint721(nftContract, toAddress,url)

方法说明

/**
 *
 * @param {string} assetAddr - NFT合约地址,指定在哪个合约中铸造NFT
 * @param {string} to - NFT token接收者地址
 * @param {string} [url] - 可选,NFT metadata的baseUrl
 * @returns Promise
 */
async mint721(assetAddr, to, url)

方法使用示例

const nftContract = ...
const to = ...
const url = 'https://ipfs.io/ipfs/QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1'
const defer = await sdk_fab.mint721(nftContract, to)
defer.txSend
    .on('confirmation', (r) => console.log('confirmation', r))
    .on('error', (r) => console.log('error', r))
await defer.txSend
查询资产
查询名下的NFT

APENFTQuery.getAssetsList(account)

方法说明

/**
 *
 * @param {string} account - 钱包地址
 * @returns Promise
 */
async APENFTQuery.getAssetsList(account);

方法使用示例

const assetsList = await sdk_query.getAssetsList(
  "TFrBnJPgZEfXtvauVG9XVLaDEDDo5jtMWV",
);
console.log("assetsList", assetsList);
查询名下的合集

APENFTQuery.getCollections(account)

方法说明

/**
 *
 * @param {string} account - 钱包地址
 * @returns Promise
 */
async APENFTQuery.getCollections(account);

方法使用示例

const collectionsList = await sdk_query.getCollections(
  "TFrBnJPgZEfXtvauVG9XVLaDEDDo5jtMWV",
);
console.log("collectionsList", collectionsList);
查询NFT详情

APENFTQuery.getAssetDetail(collection,id)

方法说明

/**
 *
* @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getAssetDetail(collection,id);

方法使用示例

const assetDetail = await sdk_query.getAssetDetail("TDczyk1W3jNf62cfeZ5d7CasiVXfwy4xiY",
  "252"
);
console.log("assetDetail", assetDetail);

订单

创建订单

初始化

方法说明

import { APENFTOrders, APENFTQuery, initApprove } from "apenft-js-tron";
  
let sdk_orders = new APENFTOrders(window.tronWeb, { networkName });
const sdk_query = new APENFTQuery(window.tronWeb, { networkName });

授权操作

方法说明

/**
 *
 * @param {object} APENFTOrders - sdk订单实例
 * @param {string} orderType - 订单类型
 * @param {object} orderParams - 订单信息
 * @returns Promise
 */
async initApprove({ APENFTOrders, orderType, orderParams})
  

方法使用示例

let orderType = "FixPriceOrder";
let orderParams = {
  asset: {
    tokenId: "6",
    tokenAddress: "TDJLEEDZ5Zr81NQv9jQjWSNtdS9nJyrLD3",
    schemaName: "ERC721",
    data: "https://gateway.btfs.io/btfs/QmPXgdwcMFdo2URjHHxvqps8Uz3h8Jvc6zMz1hJFFMwxNX",
    collection: {
      transferFeeAddress: "",
      elementSellerFeeBasisPoints: 0,
    },
  },
  quantity: 1,
  paymentToken: {
    __typename: "Currency",
    address: "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb",
    symbol: "TRX",
    decimal: 6,
    icon: "https://images-testnet.apenft.io/icon/currency/icon-trx.svg",
    decimals: 6,
  },
  listingTime: 1669272864,
  expirationTime: 1671864854,
  startAmount: 77,
  buyerAddress: "",
};
await initApprove({ sdk_orders, orderType, orderParams });
固定价上架

获取入参: APENFTQuery.getFixPriceOrderParams(params)

方法说明 :

/**
 *
 * @param {object}  params -
 * {
 *  collection: string // 合集地址
 *  id: string // id
 *  price: number // 报价
 *  currency: string  // 币种
 *  expirationTime: number // 过期时间,时间戳,格式毫秒
 *  buyerAddress?: string // 指定买家地址,可选
 * }
 * @returns Promise
 */
async APENFTQuery.getFixPriceOrderParams(params);

方法使用示例

const params = {
  collection: "TQXKjXfTiy9j2qfRXNroZdrrAawu65b72Z",
  id: "5",
  price: 20,
  currency: "USDT",
  expirationTime: new Date().getTime() + 7 * 24 * 60 * 60 * 1000,
  buyerAddress: "",
};
let orderParams = await sdk_query.getFixPriceOrderParams(params);

APENFTOrders.createSellOrder(orderParams);

方法说明

/**
 *
 * @param {object} orderParams - 订单信息
 * @returns Promise
 */
async APENFTOrders.createSellOrder(orderParams);

方法使用示例

const params = {
  collection: "TQXKjXfTiy9j2qfRXNroZdrrAawu65b72Z",
  id: "5",
  price: 20,
  currency: "USDT",
  expirationTime: new Date().getTime() + 7 * 24 * 60 * 60 * 1000,
  buyerAddress: "",
};
let orderParams = await sdk_query.getFixPriceOrderParams(params);
  
await sdk_orders.createSellOrder(orderParams);
竞拍上架

获取入参: APENFTQuery.getEnglishAuctionOrderParams(params)

方法说明 :

/**
 *
 * @param {object}  params -
 * {
 *  collection: string // 合集地址
 *  id: string // id
 *  bidPrice: number // 报价
 *  reservePrice: number // 最低报价
 *  currency: string  // 币种
 *  expirationTime: number // 过期时间,时间戳,格式毫秒
 * }
 * @returns Promise
 */
async APENFTQuery.getEnglishAuctionOrderParams(params);

方法使用示例

const params = {
  collection: "TQXKjXfTiy9j2qfRXNroZdrrAawu65b72Z",
  id: "5",
  bidPrice: 20,
  reservePrice: 100,
  currency: "USDT",
  expirationTime: new Date().getTime() + 7 * 24 * 60 * 60 * 1000,
};
let orderParams = await sdk_query.getEnglishAuctionOrderParams(params);

APENFTOrders.createAuctionOrder(orderParams);

方法说明

/**
 *
 * @param {object} orderParams - 订单信息
 * @returns Promise
 */
async APEBFTOrders.createAuctionOrder(orderParams);

方法使用示例

const params = {
  collection: "TQXKjXfTiy9j2qfRXNroZdrrAawu65b72Z",
  id: "5",
  bidPrice: 20,
  reservePrice: 100,
  currency: "USDT",
  expirationTime: new Date().getTime() + 7 * 24 * 60 * 60 * 1000,
};
let orderParams = await sdk_query.getEnglishAuctionOrderParams(params);
  
await sdk_orders.createAuctionOrder(orderParams);
购买报价

获取入参: APENFTQuery.getMakeOfferOrderOrderParams(params)

方法说明 :

/**
 *
 * @param {object}  params -
 * {
 *  collection: string // 合集地址
 *  id: string // id
 *  price: number // 报价
 *  currency: string  // 币种
 *  expirationTime: number // 过期时间,时间戳,格式毫秒
 * }
 * @returns Promise
 */
async APENFTQuery.getMakeOfferOrderOrderParams(params);

方法使用示例

const params = {
  collection: "TQFhpAACCPomuW4daSiGTh4SMCvUKtZyNs",
  id: "105",
  price: 110,
  currency: "WTRX",
  expirationTime: new Date().getTime() + 7 * 24 * 60 * 60 * 1000,
};
let orderParams = await sdk_query.getMakeOfferOrderOrderParams(params);

APENFTOrders.createBuyOrder(orderParams)

方法说明

/**
 *
 * @param {object} orderParams - 订单信息
 * @returns Promise
 */
async APENFTOrders.createBuyOrder(orderParams);

方法使用示例

const params = {
  collection: "TQFhpAACCPomuW4daSiGTh4SMCvUKtZyNs",
  id: "105",
  price: 110,
  currency: "WTRX",
  expirationTime: new Date().getTime() + 7 * 24 * 60 * 60 * 1000,
};
let orderParams = await sdk_query.getMakeOfferOrderOrderParams(params);
  
await sdk_orders.createBuyOrder(orderParams);
竞拍报价

获取入参: APENFTQuery.getEnglishAuctionBiddingOrderParams(params)

方法说明 :

/**
 *
 * @param {object}  params -
 * {
 *  collection: string // 合集地址
 *  id: string // id
 *  price: number // 报价
 *  currency: string  // 币种
 * }
 * @returns Promise
 */
async APENFTQuery.getEnglishAuctionBiddingOrderParams(params);

方法使用示例

const params = {
  collection: "TGvAiyw7uT27xVpqHaQ1NM6ZDquEEHQgso",
  id: "9927",
  price: 125,
  currency: "WTRX",
};
let orderParams = await sdk_query.getEnglishAuctionBiddingOrderParams(params);

APENFTOrders.createBiddingOrder(orderParams);

方法说明

/**
 *
 * @param {object} orderParams - 订单信息
 * @returns Promise
 */
async APENFTOrders.createBiddingOrder(orderParams);

方法使用示例

const params = {
  collection: "TGvAiyw7uT27xVpqHaQ1NM6ZDquEEHQgso",
  id: "9927",
  price: 125,
  currency: "WTRX",
};
let orderParams = await sdk_query.getEnglishAuctionBiddingOrderParams(params);
  
await sdk_orders.createBiddingOrder(orderParams);
降低固定价上架价格

获取入参: APENFTQuery.getLowerPriceOrderParams(params)

方法说明:

/**
 *
 * @param {object}  params -
 * {
 *  collection: string // 合集地址
 *  id: string // id
 *  price: number // 报价
 * }
 * @returns Promise
 */
async APENFTQuery.getLowerPriceOrderParams(params);

方法使用示例

const params = {
  collection: "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  id: "2",
  price: 80,
};
let orderParams = await sdk_query.getLowerPriceOrderParams(params);

APENFTOrders.createLowerPriceOrder(orderParams)

方法说明

/**
 *
 * @param {object} orderParams - 订单信息
 * @returns Promise
 */
async APENFTOrders.createLowerPriceOrder(orderParams);

方法使用示例

const params = {
  collection: "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  id: "2",
  price: 80,
};
let orderParams = await sdk_query.getLowerPriceOrderParams(params);
  
await sdk_orders.createLowerPriceOrder(orderParams);
接受订单
立即购买/接受报价

获取最佳卖单入参:

APENFTQuery.getAssetBestAskOrderInfo(params)

方法说明:

/**
 *
 * @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getAssetBestAskOrderInfo(collection,id);

方法使用示例

let bestAskOrder = await sdk_query.getAssetBestAskOrderInfo(
  "TDczyk1W3jNf62cfeZ5d7CasiVXfwy4xiY",
  "252"
);

APENFTOrders.account.orderMatch({ buy, sell })

方法说明

/**
 *
 * @param {object} buyOrder - 订单信息
 * @param {object} sellOrder - 订单信息
 * @returns Promise
 */
async APENFTOrders.account.orderMatch({ buyOrder, sellOrder });

方法使用示例

let OrderSide = {
  0: "Buy",
  1: "Sell",
  Buy: 0,
  Sell: 1,
};
let bestAskOrder = await sdk_query.getAssetBestAskOrderInfo(
  "TDczyk1W3jNf62cfeZ5d7CasiVXfwy4xiY",
  "252"
);
// 当前钱包地址
const accountAddress = "XXXXXX";
const signedOrder = sdk_orders.orders.orderFromJSON(bestAskOrder);
  
let recipientAddress = "";
if (bestAskOrder.side === OrderSide.Sell) {
  recipientAddress = accountAddress;
}
if (bestAskOrder.side === OrderSide.Buy) {
  recipientAddress = bestAskOrder.maker;
}
  
const { buy, sell } = sdk_orders.orders.makeMatchingOrder({
  signedOrder,
  accountAddress: accountAddress,
  recipientAddress,
});
  
await sdk_orders.account.orderMatch({ buy, sell });
取消订单

获取入参: APENFTQuery.getAssetBestAskOrderInfo(collection,id)

方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getAssetBestAskOrderInfo(collection,id);

方法使用示例

const order = await sdk_query.getAssetBestAskOrderInfo(
  "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  "2"
);

APENFTOrders.account.orderCancel(order)

方法说明

/**
 *
 * @param {object} order - 订单信息
 * @returns Promise
 */
async APENFTOrders.account.orderCancel(order);

方法使用示例

const order = await sdk_query.getAssetListingInfo(
  "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  "2"
);
const _order = sdk_orders.orders.orderFromJSON(order);
await sdk_orders.account.orderCancel(_order);
转移资产

获取入参: APENFTQuery.getTransferParams(collection,id)

方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getTransferParams(collection,id);

方法使用示例

const {metadata, assetData} = await sdk_query.getTransferParams(
  "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  "2"
);

APENFTOrders.account.assetTransfer(metadata, to)

方法说明

/**
 *
 * @param {object} metadata - 元数据
 * @param {string} to - 接收地址
 * @returns Promise
 */
async APENFTOrders.account.assetTransfer(metadata, to)

方法使用示例

 const {metadata, assetData} = await this.Querys.getTransferParams("TL39x7unoU1ivqxac43umyUaFoGzEE2Ens","2");
   const { newAsset } = await sdk_orders.getAssetOrderVersion(assetData);
   if(metadata?.asset){
    metadata.asset.data = newAsset || '';
   }
  
let to = "TQzRKbEgp7iSj9fpXX5ghdBHHoh3tEtgwU";
  
await sdk_orders.account.assetTransfer(metadata, to);
查询订单
查询NFT上架列表

APENFTQuery.getAssetListingOrders(collection,id)

方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getAssetListingOrders(collection,id);

方法使用示例

const listingData = await sdk_query.getAssetListingOrders(
  "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  "2"
);
console.log("listingData", listingData);
查询NFT出价列表

APENFTQuery.getAssetOffers(collection,id)

方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getAssetOffers(collection,id);

方法使用示例

const offersData = await sdk_query.getAssetOffers(
  "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  "2"
);
console.log("offersData", offerData);
查询NFT售卖列表

APENFTQuery.getAssetSales(collection,id)

方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getAssetSales(collection,id);

方法使用示例

const salesData = await sdk_query.getAssetSales(
  "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  "2"
);
console.log("salesData", salesData);
查询NFT交易历史

APENFTQuery.getAssetTradingHistory(collection,id)

方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @param {string} id - id
 * @returns Promise
 */
async APENFTQuery.getAssetTradingHistory(collection,id);

方法使用示例

const assetTradingHistory = await sdk_query.getAssetTradingHistory(
  "TL39x7unoU1ivqxac43umyUaFoGzEE2Ens",
  "2"
);
console.log("assetTradingHistory", assetTradingHistory);
查询收到的出价

APENFTQuery.getReceivedOffers(account)

方法说明

/**
 *
 * @param {string} account - 钱包地址
 * @returns Promise
 */
async APENFTQuery.getReceivedOffers(account);

方法使用示例

const receivedOffers = await sdk_query.getReceivedOffers(
  "TFrBnJPgZEfXtvauVG9XVLaDEDDo5jtMWV",
);
console.log("receivedOffers", receivedOffers);
查询发出的出价

APENFTQuery.getSentOffers(account)

方法说明

/**
 *
 * @param {string} account - 钱包地址
 * @returns Promise
 */
async APENFTQuery.getSentOffers(account);

方法使用示例

const sentOffers = await sdk_query.getSentOffers(
  "TFrBnJPgZEfXtvauVG9XVLaDEDDo5jtMWV",
);
console.log("sentOffers", sentOffers);

合集

查询合集
查询合集下的NFT列表

APENFTQuery.getCollectionAssetsList(collection,pagination) 方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @parm {object} pagination - 分页信息
 * @returns Promise
 */
async APENFTQuery.getCollectionAssetsList(collection,pagination);

方法使用示例

const collectionAssetsList = await sdk_query.getCollectionAssetsList(
  "TDczyk1W3jNf62cfeZ5d7CasiVXfwy4xiY",
  {
        first: 100,
        cursor: ""
      }
);
console.log("collectionAssetsList", collectionAssetsList);
查询单个合集信息

APENFTQuery.getSingleCollectionInfo(collection)

方法说明

/**
 *
 * @param {string} collection - 合集地址
 * @returns Promise
 */
async APENFTQuery.getSingleCollectionInfo(collection);

方法使用示例

const singleCollectionInfo = await sdk_query.getSingleCollectionInfo(
  "TDczyk1W3jNf62cfeZ5d7CasiVXfwy4xiY",
);
console.log("singleCollectionInfo", singleCollectionInfo);

FAQs

Package last updated on 19 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc