UNPKG

scryinfo

Version:

A real data storage library on ethereum

86 lines (73 loc) 4.79 kB
/** @author Danny Yan @date 2017-07 */ var Scry = require("./scry.js"); var util = require('util'); var fs = require("fs"); var path = require("path"); var Status = require("./scryStatus.js"); function ScryInfo(providerURL) { Scry.call(this, providerURL); this.tokenAddress = ""; // "0x00c06617f218dabb23e7f2729d69f084f8508b76"; // this.tokenABI = this.loadContentFromFile("C:/Users/Administrator/Desktop/scry contract/ScryToken.abi"); this.tokenABI = '[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"owners","type":"address[]"},{"name":"tokens","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]'; } util.inherits(ScryInfo, Scry); ScryInfo.prototype.start = function(dburl, callback) { this._createTables(); var dir = path.normalize(__dirname+"\\.db"); if(fs.existsSync(dir)==false){ fs.mkdirSync(dir); } dir = path.normalize(__dirname+"\\.db\\_p"); if(fs.existsSync(dir)==false){ fs.mkdirSync(dir); } dir = path.normalize(__dirname+"\\.db\\_v"); if(fs.existsSync(dir)==false){ fs.mkdirSync(dir); } ScryInfo.super_.prototype.start.call(this, dburl, callback); }; /** en: Get scry mana token balance. zh: 获取scry token余额. */ ScryInfo.prototype.getScryBalance = function(from, toWei) { if (toWei == null) toWei = true; var token = this.getScryTokenContractInst(); var val = this.contractCall({ func: token.balanceOf, from: from, params: [from] }); return toWei ? val : val.toNumber() / Math.pow(10, 18); }; /** en: check whether scry mana token balance is greater than 'val'. */ ScryInfo.prototype.checkBalance = function(from, val, throwError) { var token = this.getScryTokenContractInst(); from = from || this.getAccounts(true)[0]; var balance = this.getScryBalance(from); if (balance < val) { if(throwError){ throw new Error("lack of balance"); } else { return false; } } return true; }; /** en: Get scry name token contract instance. zh: 获取scry mana token实例. @return object. scry token constract instance. */ ScryInfo.prototype.getScryTokenContractInst = function() { return this.getContractInstance(this.tokenAddress, this.tokenABI); }; // ---------- private ---------- /** When the scry system startup create related tables. */ ScryInfo.prototype._createTables = function() { } module.exports = ScryInfo;