GithubHelp home page GithubHelp logo

xuperchain / xuper-sdk-js Goto Github PK

View Code? Open in Web Editor NEW
14.0 6.0 15.0 11.18 MB

The JS(TS) SDK for XuperChain

Home Page: https://xuperchain.github.io/xuper-sdk-js/

License: Apache License 2.0

JavaScript 4.23% TypeScript 95.77%

xuper-sdk-js's Introduction

Xuper SDK JS

Build Status npm version

Xuper SDK (JS/TS) is a software development kit that allows developers to quickly use XuperChain.

The SDK provides a service interface that includes account, transaction, contract and various query functions. It can be used in a browser and Nodejs environment.


English | 简体中文

Usage

Install Npm package

npm install --save @xuperchain/xuper-sdk

Quick start

import XuperSDK from '@xuperchain/xuper-sdk';

const node = ''; // node
const chain = ''; // chain

const xsdk = XuperSDK.getInstance({
    node,
    chain
});

const start = async () => {
    const result = await xsdk.getBlockChains();
    console.log(result);
};

start();

Details - API reference

Code examples

Edit xuper-sdk-demo

Environments

  • Browser depends on window.crypto
  • Nodejs >= v10.0
In the Nodejs environment, gRPC is supported and used by default, you can choose to close it, and still use Http to request
XuperSDK.getInstance({
    ...,
    env: {
        node: {
            disableGRPC: true // disable gRPC
        }
    }
})

How to build a test environment

Read the documentation , compile and deploy XuperChain

Use XuperChain Docker image to build a single-node service

  1. Pull image (XuperChian v3.7 - Repository)

docker pull smilingxinyi/xuperchain

  1. Start container

docker run -d -p 8098:8098 -p 37101:37101 -p 47101:47101 --name xc smilingxinyi/xuperchain

API reference documentation

Link

Services

Account

service name link state
Create account create LINK
Retrieve account retrieve LINK
Import private key import LINK
Export private key export LINK
Chekc address checkAddress LINK
Check mnemonic checkMnemonic LINK
Balance getBalance LINK
Balance Detail getBalanceDetail LINK

Blockchain infomation

service name link state
Blockchains getBlockChains LINK
Status checkStatus LINK
Block by id getBlockById LINK
Block by height getBlockByHeight LINK

Transaction

service name link state
Make transfer transfer LINK
Post tx postTransaction LINK
Query tx queryTransaction LINK

Contract

service name link state
New contract account createContractAccount LINK
Contract list getContracts LINK
Deploy Wasm contract deployWasmContract LINK
Invoke Wasm contarct invokeContarct LINK
Deploy Solidity contract deploySolidityContract LINK
Invoke Solidity contarct invokeSolidityContarct LINK
Deploy Native contract deployNativeContract LINK
Invoke Native contarct invokeContarct LINK
Query ACL queryACL LINK
Query stat data about contract queryContractStatData LINK

Plugin

Endorsement service plugin

The plugin must be used on the public network

EndorsementPlugin

Example:

const params = {
    server: process.env.ENDORSE_SERVER, // ip, port
    fee: process.env.FEE, // fee
    endorseServiceCheckAddr: process.env.SERVICE_SIGN_ADDRESS, // sign address
    endorseServiceFeeAddr: process.env.SERVICE_FEE_ADDRESS // fee address
}

const xsdk = new XuperSDK({
    node,
    chain,
    plugins: [
        EndorsementPlugin({
            transfer: params,
            makeTransaction: params
        })
    ]
});

xuper-sdk-js's People

Contributors

dependabot[bot] avatar godeamon avatar huangjiehua avatar smilingxinyi avatar superlitian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

xuper-sdk-js's Issues

升级报错

const demo = await xsdk.deploySolidityContract(
'XC1111111111111111@xuper', // 合约账户
'counter6', // 合约名字
bin, // evm 合约 bin
abi, // evm 合约 abi
"evm",
{},
true
);

err: contract for account not confirmed
使用升级功能发布合约时报错

开放网络获取到的数据如何解密?

我使用 js 连接 开放网络,获取到数据,但获取到的数据都是加密后的数据,如何解密相应的数据?

如下图是获取到的加密后的数据:

image

我通过在 Xuper 控制中心获取到的数据如下:

image

如何将加密的数据解析成正常数据?

安装Npm依赖包这一步成功的输出

安装Npm依赖包
npm install --save @xuperchain/xuper-sdk
这个操作之后输出

added 75 packages, and audited 76 packages in 17s

5 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice 
npm notice New major version of npm available! 8.19.3 -> 9.6.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.6.2
npm notice Run npm install -g [email protected] to update!
npm notice 

360截图20230319181451555

输出这个是安装成功了吗?

交易ID计算版本支持新版本

目前xchain交易ID计算版本最新版本为3,go、java sdk已经支持,目前 JS sdk 还不支持,导致在开放网络使用失败,JS SDK 需要支持新版交易ID计算方式。

如何获取交易hash?

我使用的是超级链的开放网络,连接的 文件hash 智能合约,我在执行存储文件 storeFileInfo 合约方法后,尝试去查询这个交易记录获取他的交易 hash(执行合约方法后没找到交易hash,只获取到一个 txid )

image

我尝试使用 xsdk.queryTransaction(txid) 这个方法获取详细的交易信息,看是否可以获取到 交易hash,执行之后输出如下:

image

好像还是没有 交易hash,但是获取到一个 blockid,再尝试使用xsdk.getBlockById(blockid)这个方法获取区块信息:

通过交易获取到的 blockidvCd/DO/GVsL28MrqljpyB5Dhl3CM+cofvU8J5XJFbuc= ,但是使用这个 id 获取不到区块信息:

image

这时候发现有个 xsdk.transactionIdToHex('vCd/DO/GVsL28MrqljpyB5Dhl3CM+cofvU8J5XJFbuc=') 转 hex 的方法,于是把 blockid 进行了转换:

xsdk.transactionIdToHex('vCd/DO/GVsL28MrqljpyB5Dhl3CM+cofvU8J5XJFbuc=')
# 输出:bc277f0cefc656c2f6f0caea963a720790e197708cf9ca1fbd4f09e572456ee7

再用 bc277f0cefc656c2f6f0caea963a720790e197708cf9ca1fbd4f09e572456ee7 来查询 区块信息:

await xsdk.getBlockById('bc277f0cefc656c2f6f0caea963a720790e197708cf9ca1fbd4f09e572456ee7')

输出:

image

确实获取到了区块信息,说明 xsdk.getBlockById(blockid) 这个方法不能直接根据 id 获取,需要先把 blockid 进行 hex 转换之后才行?这是不是不太合理?

另外就是:怎么获取 交易hash ?

8098 是什么端口?

使用文档中的 docker 运行,可以进行正常测试,连接的是 8098 端口

docker run -d -p 8098:8098 -p 37101:37101 -p 47101:47101 --name xc smilingxinyi/xuperchain

但是,使用最新版本的编译,不能使用 37101 端口连接,不知道这个 8098 端口是什么端口?如何配置?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.