sensible-sdk
Version:
Sensible-SDK
208 lines (162 loc) • 3.96 kB
Markdown
# Sensible-SDK
[](https://www.npmjs.com/package/sensible-sdk)
This sdk helps you to interact with [sensible contracts][sensible]
Please read the [documentation][docs] for more.
## How to install
npm install sensible-sdk --save
## How to use(FT)
### Init
```js
const { SensibleFT } = require("sensible-sdk");
const { signers, signerSelecteds } = await SensibleFT.selectSigners();
const ft = new SensibleFT({
network: "testnet", //mainnet or testnet
purse: "", //the wif of a bsv address to offer transaction fees
feeb: 0.5,
signers,
signerSelecteds,
//apiUrl: "Your sensible url"
});
ft.sensibleApi.authorize({
authorization:
"Your Api Key",
});
```
Since 2022-11-01, the request of Sensible Query needs to be authenticated
If you don't want to use Sensible Query API, you can use your own service, which can be specified through apiurl.
### Genesis
Define a token with name,symbol,decimal number.
You should save the returned values.(genesis、codehash、sensibleId)
```js
let { txid, genesis, codehash, sensibleId } = await ft.genesis({
genesisWif: CoffeeShop.wif,
tokenName: "COFFEE COIN",
tokenSymbol: "CC",
decimalNum: 3,
});
```
### Issue
Issue 1000000000000 tokens
```js
let { txid } = await ft.issue({
genesis: genesis,
codehash: codehash,
sensibleId: sensibleId,
genesisWif: CoffeeShop.wif,
receiverAddress: CoffeeShop.address,
tokenAmount: "1000000000000",
allowIncreaseIssues: false, //if true then you can issue again
});
```
### Transfer
Transfer from CoffeShop to Alice and Bob
```js
let { txid } = await ft.transfer({
senderWif: CoffeeShop.wif,
receivers: [
{
address: Alice.address,
amount: "5000000",
},
{
address: Bob.address,
amount: "5000000",
},
],
codehash: codehash,
genesis: genesis,
});
```
### Query Balance
Query token's balance
```js
let { balance, pendingBalance, utxoCount, decimal } = await ft.getBalanceDetail(
{
codehash,
genesis,
address: Alice.address,
}
);
```
## How to use(NFT)
### Init
```js
const { SensibleNFT } = require("sensible-sdk");
const { signers, signerSelecteds } = await SensibleNFT.selectSigners();
const nft = new SensibleNFT({
network: "testnet", //mainnet or testnet
purse: "", //the wif of a bsv address to offer transaction fees
feeb: 0.5,
signers,
signerSelecteds,
});
```
### Genesis
Define the NFT with totalSupply
You should save the returned values.(genesis、codehash、sensibleId)
```js
let { txid, genesis, codehash, sensibleId } = await nft.genesis({
genesisWif: CoffeeShop.wif,
totalSupply: "3",
});
```
### Issue
Mint a NFT to CoffeeShop's address
metaTxId is created by metaid which stands for NFT State
```js
let { txid, tokenIndex } = await nft.issue({
genesis,
codehash,
sensibleId,
genesisWif: CoffeeShop.wif,
receiverAddress: CoffeeShop.address,
metaTxId: "8424d5efb0c11f574d7f045959bdc233c17804312c9ca1e196cebdae2b2646ea",
metaOutputIndex: 0,
});
```
### Transfer
Transfer #1 NFT from CoffeShop to Alice
```js
let { txid } = await nft.transfer({
senderWif: CoffeeShop.wif,
receiverAddress: Alice.address,
codehash: codehash,
genesis: genesis,
tokenIndex: "1",
});
```
### Sell
Sell #1 NFT
```js
let { sellTx, tx } = await nft.sell({
codehash,
genesis,
sellerWif: Alice.wif,
tokenIndex: "1",
satoshisPrice: 2000,
});
```
### Cancel Sell
Cancel Sell #1 NFT
```js
let { unlockCheckTx, tx } = await nft.cancelSell({
codehash,
genesis,
tokenIndex: "1",
sellerWif: Alice.wif,
});
```
### Buy
Buy #1 NFT
```js
let { unlockCheckTx, tx } = await nft.buy({
codehash,
genesis,
tokenIndex: "1",
buyerWif: Bob.wif,
});
```
## Example
<a href="https://github.com/sensible-contract/sensible-sdk/tree/master/examples">Go to examples</a>
[docs]: http://sensible-sdk.readthedocs.io/
[sensible]: https://sensiblecontract.org/