Skip to content
Squeezer ChainKit - Agnostic blockchain integration
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.eslintignore
.eslintrc
.gitignore
LICENSE
README.md
index.js
package-lock.json
package.json

README.md

squeezer-chainkit

Agnostic blockchain integration

The main usage of the ChainKit is to unify top blockchains interfaces into a single normalized API interface , therefore you can build blockchain apps easily without digging into blockchain infrastructure

Check the Squeezer ChainKit Gateway API Documentation:

Table of contents

Install

npm install squeezer-chainkit --save

back to top

Initialize

You will need a Squeezer access key in order to use the chainkit. You can get one here

const ChainKit = require('squeezer-chainkit');
const chainKit = new ChainKit(options); 
  • options required
  • options.accessKey - required Squeezer access key
  • options.environment - required use test for sandbox or live for production

ITN ( Instant Transaction Notification )


The ITN system will notify your server when you receive a transaction and when a transaction status changes. This is a quick and useful way to integrate blockchain transactions processing.

Please check the Squeezer Blockchain Gateway API Documentation-> Configure ITN callback url

chainKit.configureItnUrl(options, callback)
  • options - required.
  • options.url - required. ITN callback url (http://example.org/itn/callback).
  • callback - required callback function, accepts 2 values (error,result)

Example request

chainKit.configureItnUrl({
  url: 'http://example.org/itn/callback'
}, (err, response) => {
  console.log(response)
});

Example response from server

{
  "walletId": "8193d025-6430-496e-abf3-88f06b51889c",
  "address": "0xbd61ef790C3eaf4D0c4D4bE3558F8a501863525f",
  "token": "41dbecfb0454183a4c7a9be8b874e1785b5..."
}

ITN JSON object:

{
  "from": "0xc03f7B9bddF8aeeBCbA2f818E5f873f71b85EB5c",
  "to": "0x903f7B9bddF8aeeBCbA2f818E5f873f71b85EB5c",
  "amount": "0.99999999",
  "type": "in",
  "currency": "ETH",
  "accessKeyHash": "accessKeyHash",
  "hash": "0xcf387e8d1a95bd3a5b54269aa0a228...",
  "block": "891093",
  "status": 1,
  "itnStatus": 1,
  "createdAt": "2018-05-13 18:09:18",
  "updateAt": "2018-05-13 18:09:18"
}

NOTE: As a security measure please make sure that you validate accessKeyHash is the same at with your default access key

Validate accessKeyHash example:

if (accessKeyHash === crypto.createHmac('SHA256', accessKey).update(accessKey).digest('hex')) {
  console.log('valid access key hash') 
} else {
  console.log('invalid access key hash')
}

back to top

Wallet types

Get current available blockchain wallet types

chainKit.walletTypes(callback)
  • callback - required callback function, accepts 2 values (error,result)

Example request

chainKit.walletTypes((err, response) => {
  console.log(response)
});

Example response from server

{
  "message":"success",
  "data":[
    {
      "type":"ethereum",
      "info":"Ethereum wallet."
    },
    {
      "type":"stellar",
      "info":"Stellar wallet."
    },
    {
      "type":"wavesplatform",
      "info":"Waves platform wallet."
    }
  ]
}

back to topx

Create wallet

Create a new blockchain wallet.

chainKit.createWallet(options, callback)
  • options - required.
  • options.type - required. Wallet type (ETH).
  • options.secret - required. Secret (secret123).
  • options.options - required. Options object.
  • callback - required callback function, accepts 2 values (error,result)

Example request

chainKit.createWallet({
  type: 'ethereum',
  options: {
    asset: 'ETH',
    assetType: 'native'
  }
}, (err, response) => {
  console.log(response)
});

Example response from server

{
  "walletId": "8193d025-6430-496e-abf3-88f06b51889c",
  "address": "0xbd61ef790C3eaf4D0c4D4bE3558F8a501863525f",
  "token": "41dbecfb0454183a4c7a9be8b874e1785b5..."
}

NOTE: Squeezer will not store any sensitive data similar to token. For later usage please store the wallet details on a secure & safe environment.

back to top

Send transaction

Initiate a new blockchain transaction.

chainKit.sendTransaction(options, callback)
  • options - required.
  • options.amount - required. Amount to send, 8 decimal max. (0.01).
  • options.walltId - required. wallet id. (ETH).
  • options.to - required. Receiver's address
  • options.token - required. Wallet token
  • options.secret - required. Secret (secret123).
  • callback - required callback function, accepts 2 values (error,result)

Example request

chainKit.sendTransaction({
  amount: 0.01,
  walletId: '1dd2e289-8f80-4b4a-8592-xxxxxxxxxxx',
  to: '0x207E1a4F3Ab910D2164bC3646CFD0aF697f86713',
  token: "41dbecfb04541........"
}, (err, response) => {
  console.log(response)
});

Example response from server

{
  "hash" : "0x4b9c1358fcbeb5434457355e3e8e44e10ebc6bec02d40c7a28046b1cfef99476"
}

back to top

Get transactions

Get transactions for a specific wallet

chainKit.getTransactions(options, callback)
  • options - required.
  • options.walletId - required. Wallet ID
  • callback - required callback function, accepts 2 values (error,result)

Example request

chainKit.getTransactions({
  walletId: "0dbeb851-b9e7-42e4-a448-71f8520f1ea3",
}, (err, response) => {
  console.log(response)
});

Example response from server

{
  "message": "success",
  "data": [
    {
      "from": "0xc03f7B9bddF8aeeBCbA2f818E5f873f71b85EB5c",
      "to": "0x903f7B9bddF8aeeBCbA2f818E5f873f71b85EB5c",
      "amount": 0.99999999,
      "type": "in",
      "hash": "0xcf387e8d1a95bd3a5b54269aa0a228f159d3cd33fa9e946617c532c5cb8c77bb",
      "block": 891093,
      "status": 0,
      "itnStatus": 0,
      "createdAt": "2018-05-13 18:09:18",
      "updateAt": "2018-05-13 18:09:18"
    }
  ]
}

back to top

Get balance

Get balance for a specific wallet

chainKit.getBalance(options, callback)
  • options - required.
  • options.walletId - required. Wallet ID
  • callback - required callback function, accepts 2 values (error,result)

Example request

chainKit.getBalance({
  walletId: "0dbeb851-b9e7-42e4-a448-71f8520f1ea3",
}, (err, response) => {
  console.log(response)
});

Example response from server

{
  "message":"success",
  "data": {
    "balance":0
  }
}

back to top

Smart contract ( In development feature )

Access a smart contract

chainKit.smartContract(options, callback)
  • options - required.
  • options.address - required. Smart contract address.
  • options.type - required. Smart contract type. (ETH)
  • options.abi - required. Abi code.
  • options.methods - required. Smart contract methods.
  • options.token - required. Wallet token
  • callback - required callback function, accepts 2 values (error,result)

Example request

chainKit.smartContract({
  type: 'ETH',
  abi : '',
  address: '0x207E1a4F3Ab910D2164bC3646CFD0aF697f86713',
  token: '348nagfgf45tgtg....',
  methods: [{
    listVotes: ['arg1', 'arg2'],
    votesType: ['positive']
  }]
}, (err, response) => {
  console.log(response)
});

back to top

You can’t perform that action at this time.