npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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环境下使用,需要配置环境变量

  1. 在项目根目录下新建.env文件,内容如下
# 用于操作的钱包私钥
PK_TAKER            =  xxxxx
PK_MAKER            =  xxxxx

# trongrid网络到APIKEY
TRON_PRO_API_KEY    =  xxxxx-xxxx-xxxxx-xxxxx-xxxxx

注意:将.env加入到.gitignore中,避免被提交

  1. 安装dotenv
npm install dotenv
  1. 在项目文件中引入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

订单

创建订单

接受订单

取消订单

查询订单