Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

meta-contract

Package Overview
Dependencies
Maintainers
0
Versions
106
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

meta-contract

Meta Contract SDK

  • 0.4.10
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
102
increased by82.14%
Maintainers
0
Weekly downloads
 
Created
Source

Meta-Contract SDK

This sdk helps you to interact with MVC meta contracts

Please read the documentation for more.

How to install

npm install meta-contract --save

How to use(FT)

Init

import { FtManager, API_TARGET } from 'meta-contract'

const ft = new FtManager({
  network: 'testnet',
  apiTarget: API_TARGET.MVC,
  purse: '', //the wif of a mvc address to offer transaction fees
  feeb: 0.5,
  apiHost,
})

Genesis

Define a token with name,symbol,decimal number. You should save the returned values.(genesis、codehash、sensibleId)

let { txHex, txid, tx, genesis, codehash, sensibleId } = await ft.genesis({
  version: 2,
  tokenName: 'COFFEE COIN',
  tokenSymbol: 'CC',
  decimalNum: 3,
  genesisWif: CoffeeShop.wif,
})

Mint

Mint 1000000000000 tokens

let { txid, txHex, tx } = await ft.mint({
  version: 2,
  sensibleId: sensibleId,
  genesisWif: CoffeeShop.wif,
  receiverAddress: CoffeeShop.address,
  tokenAmount: '1000000000000',
  allowIncreaseMints: false, //if true then you can mint again
})

Transfer

Transfer from CoffeShop to Alice and Bob

let { txid } = await ft.transfer({
  codehash: codehash,
  genesis: genesis,
  receivers: [
    {
      address: Alice.address,
      amount: '5000000',
    },
    {
      address: Bob.address,
      amount: '5000000',
    },
  ],
  senderWif: CoffeeShop.wif,
  ftUtxos: ParamFtUtxo[],
  ftChangeAddress: string | mvc.Address,

  utxos: ParamUtxo[],
  changeAddress: string | mvc.Address

})

Query Balance

Query token's balance

let { balance, pendingBalance, utxoCount, decimal } = await ft.getBalanceDetail({
  codehash,
  genesis,
  address: Alice.address,
})

How to use(NFT)

Init

import { API_NET, API_TARGET, mvc, NftManager } from 'meta-contract'

// Generate new seed , need to memorize this mnemonic or use your own
// let mnemonic = mvc.Mnemonic.fromString(cute siren parrot merit swamp plate federal buddy sing tourist family tragic)
let mnemonic = mvc.Mnemonic.fromRandom()
console.log(mnemonic.toString())
let hdPrivateKey = mnemonic.toHDPrivateKey('', 'testnet').deriveChild("m/44'/0'/0'")
console.log(hdPrivateKey.publicKey.toAddress('testnet').toString())
console.log(mnemonic.toHDPrivateKey('', 'testnet').deriveChild("m/44'/0'/0'").privateKey.toString())
// use this private key to sign txs later
const privKey = mnemonic.toHDPrivateKey('', 'testnet').deriveChild("m/44'/0'/0'").privateKey.toString()
const nftManager = new NftManager({ apiTarget: API_TARGET.MVC, network: API_NET.TEST, purse: privKey })
// todo remove authorize in the future
nftManager.api.authorize({ authorization: 'METASV_KEY' })

Genesis

Define the NFT with totalSupply You should save the returned values.(genesis、codehash、sensibleId)

const result = await nftManager.genesis({ totalSupply: '10', version: 2 })
console.log(result)

Mint

Mint a NFT to CoffeeShop's address metaTxId is created by metaid which stands for NFT State

// todo generate metaId tx before mint
const mintResult = await nftManager.mint({
  version: 2,
  metaTxId: '0000000000000000000000000000000000000000000000000000000000000000',
  sensibleId: result.sensibleID,
  metaOutputIndex: 0,
})
console.log(mintResult)

Transfer

Transfer #1 NFT from CoffeShop to Alice

const result = await nftManager.transfer({
  codehash: '48d6118692b459fabfc2910105f38dda0645fb57',
  genesis: '4920af2eb18493255e662b07d1d80610de7cb2e3',
  receiverAddress: 'mymqKrpZjY31ABhPXfXjfVcUd78L1LCHEv',
  senderWif: privKey,
  tokenIndex: '1',
})
console.log(result)

Sell

Sell #1 NFT

let { sellTx, tx } = await nft.sell({
  genesis,
  codehash,
  tokenIndex: '1',
  sellerWif: Alice.wif,
  price: 2000,
})

Cancel Sell

Cancel Sell #1 NFT

let { unlockCheckTx, tx } = await nft.cancelSell({
  genesis,
  codehash,
  tokenIndex: '1',

  sellerWif: Alice.wif,
})

Buy

Buy #1 NFT

let { unlockCheckTx, tx } = await nft.buy({
  codehash,
  genesis,
  tokenIndex: '1',
  buyerWif: Bob.wif,
  buyerAddress: Bob.Address,
})

Example

Go to examples

Keywords

FAQs

Package last updated on 29 Nov 2024

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