squeezer-blockchain-connector
v1.0.3-alpha
Published
Squeezer agnostic blockchain connector
Downloads
7
Maintainers
Readme
Blockchain connector is deprecated - please use Squeezer ChainKit
squeezer-blockchain-connector
Agnostic blockchain connector
The main scope for adding the connector is to unify all the current blockchains data assets into a single normalized API interface , therefore you can build blockchain apps easily without digging into all blockchain infrastructures
Basically the connector is only a client for the Squeezer Blockchain Gateway where actually all the magic happens.
Check the Squeezer Blockchain Gateway API Documentation:
Squeezer Blockchain Gateway - Test
Squeezer Blockchain Gateway - Production (in development)
Table of contents
- Install
- ITN ( Instant Transaction Notification )
- Initialize
- Wallet types
- Create Wallet
- Send transaction
- Transactions
- Get balance
- Smart contract
Install
npm install squeezer-blockchain-connector --save
Initialize
You will need a Squeezer access key in order to use the blockchain connector. You can get one here
const BlockchainConnector = require('squeezer-blockchain-connector');
const blockchainConnector = new BlockchainConnector(options);
options
requiredoptions.accessKey
- required Squeezer access keyoptions.environment
- required usetest
for sandbox orlive
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
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')
}
Wallet types
Get current available blockchain wallet types
blockchainConnector.walletTypes(callback)
callback
- required callback function, accepts 2 values (error
,result
)
Example request
blockchainConnector.walletTypes((err, response) => {
console.log(response)
});
Example response from server
{
"message":"success",
"data":[
{
"type":"ETH",
"info":"Ethereum wallet."
},
{
"type":"BTC",
"info":"Bitcoin wallet."
},
{
"type":"BTC",
"info":"Bitcoin wallet."
}
]
}
Create wallet
Create a new blockchain wallet.
blockchainConnector.createWallet(options, callback)
options
- required.options.type
- required. Wallet type (ETH
).callback
- required callback function, accepts 2 values (error
,result
)
Example request
blockchainConnector.createWallet({
type: 'ETH'
}, (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.
Send transaction
Initiate a new blockchain transaction.
blockchainConnector.sendTransaction(options, callback)
options
- required.options.amount
- required. Amount to send, 8 decimal max. (0.01
).options.type
- required. Transaction type. (ETH
).options.to
- required. Receiver's addressoptions.token
- required. Wallet tokencallback
- required callback function, accepts 2 values (error
,result
)
Example request
blockchainConnector.sendTransaction({
amount: 0.01,
type: 'ETH',
to: '0x207E1a4F3Ab910D2164bC3646CFD0aF697f86713',
token: "41dbecfb04541........"
}, (err, response) => {
console.log(response)
});
Example response from server
{
"hash" : "0x4b9c1358fcbeb5434457355e3e8e44e10ebc6bec02d40c7a28046b1cfef99476"
}
Get transactions
Get transactions for a specific wallet
blockchainConnector.getTransactions(options, callback)
options
- required.options.walletId
- required. Wallet IDcallback
- required callback function, accepts 2 values (error
,result
)
Example request
blockchainConnector.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"
}
]
}
Get balance
Get balance for a specific wallet
blockchainConnector.getBalance(options, callback)
options
- required.options.walletId
- required. Wallet IDcallback
- required callback function, accepts 2 values (error
,result
)
Example request
blockchainConnector.getBalance({
walletId: "0dbeb851-b9e7-42e4-a448-71f8520f1ea3",
}, (err, response) => {
console.log(response)
});
Example response from server
{
"message":"success",
"data": {
"balance":0
}
}
Smart contract ( In development feature )
Access a smart contract
blockchainConnector.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 tokencallback
- required callback function, accepts 2 values (error
,result
)
Example request
blockchainConnector.smartContract({
type: 'ETH',
abi : '',
address: '0x207E1a4F3Ab910D2164bC3646CFD0aF697f86713',
token: '348nagfgf45tgtg....',
methods: [{
listVotes: ['arg1', 'arg2'],
votesType: ['positive']
}]
}, (err, response) => {
console.log(response)
});