scryinfo
Version:
A real data storage library on ethereum
86 lines (73 loc) • 4.79 kB
JavaScript
/**
@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;