fuel-core
Version:
Essential javascript architecture for the Fuel side chain
67 lines (54 loc) • 2.12 kB
JavaScript
const { assertNew } = require('../structs/structs');
const types = require('../types/types');
const _utils = require('../utils/utils');
const { FuelDBKeys, FuelInterface, ERC20Interface } = require('../interfaces/interfaces');
const { addresses, networks } = require('../config/config');
const errors = require('../errors/errors');
const { Contract } = require('ethers');
const { parseTransactions } = require('../blocks/parseTransactions');
const { transactionsFromReceipt } = require('../blocks/processBlock');
const { intakeTransaction } = require('../transactions/intakeTransaction');
// Test post
module.exports = (db, mempool, accounts, faucet) => async (url, args = {}) => {
try {
types.TypeString(url);
types.TypeObject(args);
if (url.indexOf('/get') !== -1) {
types.TypeHex(args.key);
return { data: { error: null, result: await db.get(args.key) }};
}
if (url.indexOf('/transact') !== -1) {
types.TypeHex(args.transaction);
const result = await intakeTransaction({
transaction: args.transaction,
db,
mempool,
accounts,
batchAll: true,
});
// send out result
return { data: { error: null, result: result ? '0x1' : '0x0' }};
}
if (url.indexOf('/faucet') !== -1) {
const ip = '0.0.0.0';
TypeHex(args.address, 20);
await db.set(FuelDBKeys.ip + _utils.ipToHex(ip).slice(2), '1'); // SHOULD BE ,false); // prevent duplicates for issuance..
await faucet.set(FuelDBKeys.ip + _utils.ipToHex(ip).slice(2), args.address);
// send out result
return { data: { error: null, result: '0x1' }};
}
if (url.indexOf('/account') !== -1) {
types.TypeHex(args.address, 20);
// Get Block Number
const dbKeys = await accounts.keys(args.address);
const getAllEntries = await db.batch(dbKeys.map(key => ({
type: 'get',
key,
})));
// send out result
return { data: { error: null, result: _utils.RLP.encode([dbKeys, getAllEntries]) }};
}
} catch (error) {
throw new errors.ByPassError(error);
}
};