54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
const grpc = require("@grpc/grpc-js");
|
|
const fs = require('fs');
|
|
|
|
var id = 100
|
|
|
|
export function connect(url, ca, cert, key, emerald) {
|
|
let credentials = grpc.credentials.createInsecure()
|
|
if (ca || cert || key) {
|
|
console.log("Using TLS")
|
|
credentials = grpc.credentials.createSsl(
|
|
ca ? fs.readFileSync(ca) : null,
|
|
key ? fs.readFileSync(key) : null,
|
|
cert ? fs.readFileSync(cert) : null
|
|
);
|
|
}
|
|
console.log('Connecting to: ' + url + '...')
|
|
return new emerald.Blockchain(
|
|
url,
|
|
credentials
|
|
);
|
|
}
|
|
|
|
export function describe(client, handler) {
|
|
client.Describe({}, handler);
|
|
}
|
|
|
|
export function nativeCall(client, chainCode, chain) {
|
|
return new Promise((resolve, reject) => {
|
|
const call = client.NativeCall({
|
|
chain: chainCode,
|
|
items: [{
|
|
id: id++,
|
|
method: "eth_getBalance",
|
|
payload: "WyIweDhEOTc2ODlDOTgxODg5MkI3MDBlMjdGMzE2Y2MzRTQxZTE3ZkJlYjkiLCAibGF0ZXN0Il0="
|
|
}],
|
|
quorum: 1,
|
|
min_availability: 0
|
|
})
|
|
call.on('data', (item) => {
|
|
resolve(toResult(chain, item, null))
|
|
})
|
|
call.on('end', () => resolve(toResult(chain, null, null)))
|
|
call.on('error', (e) => reject(toResult(chain, null, e)))
|
|
})
|
|
}
|
|
|
|
function toResult(chain, obj, err) {
|
|
return {
|
|
chain: chain,
|
|
payload: obj,
|
|
error: err
|
|
}
|
|
}
|