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

@appliedblockchain/mantle-core

v1.14.0

Published

Mantle is a blockchain SDK targeting Ethereum and Hyperledger Fabric

Downloads

42

Readme

Mantle

Mantle SDK repository

Initialising a new Mantle instance:

const mantle = new Mantle()

The mantle instance exposes methods to facilitate, amongst other things, mnemonic and HD public/private key generation, IPFS API access etc.

Configuring Mantle

Mantle accepts a configuration object on instantiation, as below:

const mantle = new Mantle({
  provider: 'http://localhost:8545', // parity address
  proxyURL: 'http://localhost:3000/api', // proxy address for IPFS/Trx calls
  contracts: [ {
    name: 'foo',
    address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
    abi: [ {
      type: 'function',
      name: 'foo',
      constant: false,
      payable: false,
      stateMutability: 'nonpayable',
      inputs: [ { 'name': 'b', 'type': 'uint256' }, { 'name': 'c', 'type': 'bytes32' } ],
      outputs: [ { 'name': '', 'type': 'address' } ]
    } ]
  } ] // contract interfaces - automatically instantiated onto web3 if provided
  tokens: {
    ERC20: [
      { name: 'TokenName', address: '0x...'} // Will use the default ERC20 abi present in mantle, but a custom abi can be passed here as well
    ]
  },
})

Mnemonic generation

Mnemonic, HD private/public keys and private/public keys are generated via loadMnemonic. Supply a mnemonic associated with an existing account in order to retrieve key information, or supply no argument in order to generate a new set of keys.

Symmetric encryption

Facilitated via the encryptSymmetric and decryptSymmetric static methods. Shared secrets can be generated via createSymmetricKey.

Examples

Please see tests in test/mantle.spec.js for further examples.

Mnemonic generation and key removal

mantle.mnemonic // undefined

mantle.loadMnemonic() // No argument supplied - used for new accounts

mantle.mnemonic // 'knife zone arch average surround tape napkin elephant share fuel jeans false'

mantle.removeKeys()
mantle.mnemonic // null

mantle.loadMnemonic('tragic panic toast hazard royal marine visual laptop salmon guard finger upper') // Mnemonc supplied - should be used to load existing keys

Asymmetric encryption/decryption

const data = 'foo'

const encrypted = Mantle.encrypt(data, mantle.publicKey) // Returns a buffer

const decrypted = Mantle.decrypt(encrypted, mantle.privateKey) || mantle.decrypt(encrypted) // 'foo'

Symmetric encryption/decryption

const data = 'foo'
const secret = Mantle.createSymmetricKey()

const encrypted = Mantle.encryptSymmetric(data, secret) // Returns a Buffer

const decrypted = Mantle.decryptSymmetric(encrypted, secret) // 'foo'

Tokens

If your config define one or multiple tokens they will be loaded automatically. The first token will become the defaultToken accessible via mantle.defaultToken. Other tokens can be access via mantle.tokens.TokenName.

Each tokens also has two convenience methods: getBalance(address) with address defaulting to mantle.address and sendTokens(address, amount). The default token getBalance and sendTokens methods are also aliased directly to mantle.getBalance() and mantle.sendTokens(...).