element-js-tron
v0.1.64
Published
Javascript SDK for the Element
Downloads
138
Readme
SDK for APENFT marketplace base on Tron blockchain and TronLink wallet
开发者指南
目录
安装
配置
- 配置环境变量
- 初始化SDK
资产
- 创建合集
- 铸造NFT
订单
- 创建订单
- 接受订单
- 取消订单
- 查询订单
安装
npm install element-js-tron
sdk依赖tronlink钱包进行链上操作
在浏览器环境下直接使用TronLink注入到window.tronWeb
在node环境下使用,还需安装 tronweb,
npm install tronweb
配置
配置环境变量
如在node环境下使用,需要配置环境变量
- 在项目根目录下新建.env文件,内容如下
# 用于操作的钱包私钥
PK_TAKER = xxxxx
PK_MAKER = xxxxx
# trongrid网络到APIKEY
TRON_PRO_API_KEY = xxxxx-xxxx-xxxxx-xxxxx-xxxxx
注意:将.env加入到.gitignore中,避免被提交
- 安装dotenv
npm install dotenv
- 在项目文件中引入dotenv,并配置
const dotenv = require('dotenv');
dotenv.config();
初始化SDK
/* 0. 引入SDK */
import sdk from "element-js-tron";
const { ElementOrders, Network, AssetFactory, ElementSchemaName } = sdk;
/* 1. 初始化tronWeb */
/* 浏览器环境下 */
// const {tronWeb} = window;
/* node环境下,配置privateKey可以避免弹窗签名 */
const tronWeb = new TronWeb({
fullHost: 'https://api.shasta.trongrid.io',
privateKey: process.env.PK_MAKER,
headers: { "TRON-PRO-API-KEY": process.env.TRON_PRO_API_KEY },
});
/* 2. 初始化SDK */
const networkName = Network.Shasta;
const sdk_orders = new ElementOrders(tronWeb, { networkName });
/* 3. 登录,获取后续api操作所需token */
await sdk_orders.login();
// 然后就可以进行订单操作了
/* 4. 如需创建资产,可通过以下两种方法获取工厂类 */
/* 4.1 从sdk_orders中获取工厂类 */
const sdk_fab = sdk_orders.assetFactory
/* 4.2 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