pweb3
Version:
Pchain JavaScript API
154 lines (150 loc) • 5.06 kB
JavaScript
import { AbstractWeb3Module } from 'pweb3-core';
import { ProviderDetector, ProvidersModuleFactory } from 'pweb3-providers';
import * as Utils from 'pweb3-utils';
import { Eth } from 'pweb3-eth';
import { Pi } from 'pweb3-pi';
import { Shh } from 'pweb3-shh';
import { Network } from 'pweb3-net';
import { Personal } from 'pweb3-eth-personal';
import { Tdm } from 'pweb3-tdm';
import { Chain } from 'pweb3-chain';
import { Del } from 'pweb3-del';
var version = "1.0.0-beta.62";
var CryptoJS = require('crypto-js');
var sha3 = require('crypto-js/sha3');
class Web3 extends AbstractWeb3Module {
constructor(provider, net, options = {}) {
super(provider, options, null, net);
this.eth = new Eth(this.currentProvider, net, options);
this.shh = new Shh(this.currentProvider, net, options);
this.tdm = new Tdm(this.currentProvider, net, options);
this.chain = new Chain(this.currentProvider, net, options);
this.del = new Del(this.currentProvider, net, options);
this.pi = new Pi(this.currentProvider, net, options);
this.utils = Utils;
this.version = version;
}
get accounts() {
return this.eth.accounts;
}
set defaultGasPrice(value) {
super.defaultGasPrice = value;
this.eth.defaultGasPrice = value;
this.shh.defaultGasPrice = value;
}
get defaultGasPrice() {
return super.defaultGasPrice;
}
set defaultGas(value) {
super.defaultGas = value;
this.eth.defaultGas = value;
this.shh.defaultGas = value;
}
get defaultGas() {
return super.defaultGas;
}
set transactionBlockTimeout(value) {
super.transactionBlockTimeout = value;
this.eth.transactionBlockTimeout = value;
this.shh.transactionBlockTimeout = value;
}
get transactionBlockTimeout() {
return super.transactionBlockTimeout;
}
set transactionConfirmationBlocks(value) {
super.transactionConfirmationBlocks = value;
this.eth.transactionConfirmationBlocks = value;
this.shh.transactionConfirmationBlocks = value;
}
get transactionConfirmationBlocks() {
return super.transactionConfirmationBlocks;
}
set transactionPollingTimeout(value) {
super.transactionPollingTimeout = value;
this.eth.transactionPollingTimeout = value;
this.shh.transactionPollingTimeout = value;
}
get transactionPollingTimeout() {
return super.transactionPollingTimeout;
}
set defaultAccount(value) {
super.defaultAccount = value;
this.eth.defaultAccount = value;
this.shh.defaultAccount = value;
}
get defaultAccount() {
return super.defaultAccount;
}
set defaultBlock(value) {
super.defaultBlock = value;
this.eth.defaultBlock = value;
this.shh.defaultBlock = value;
}
get defaultBlock() {
return super.defaultBlock;
}
setProvider(provider, net) {
return super.setProvider(provider, net) && this.eth.setProvider(provider, net) && this.shh.setProvider(provider, net);
}
static get givenProvider() {
return ProviderDetector.detect();
}
getVoteHash(from, pubKey, amount, salt) {
if (pubKey.substr(0, 2) === '0x') pubKey = pubKey.substr(2);
if (typeof amount == 'string' && amount.substr(0, 2) === '0x') {
amount = amount.substr(2);
} else {
amount = amount.toString('16');
}
amount = amount.length % 2 == 0 ? amount : '0' + amount;
var saltCode = '';
for (var i = 0; i < salt.length; i++) {
saltCode += salt[i].charCodeAt().toString('16');
}
var concatString = from + pubKey + amount + saltCode;
return '16' + sha3(concatString.toLowerCase(), {
encoding: 'hex'
});
}
sha3(value, options) {
if (options && options.encoding === 'hex') {
if (value.length > 2 && value.substr(0, 2) === '0x') {
value = value.substr(2);
}
value = CryptoJS.enc.Hex.parse(value);
}
return sha3(value, {
outputLength: 256
}).toString();
}
static get modules() {
const providerResolver = new ProvidersModuleFactory().createProviderResolver();
return {
Eth: (provider, options, net) => {
return new Eth(providerResolver.resolve(provider, net), options);
},
Net: (provider, options, net) => {
return new Network(providerResolver.resolve(provider, net), options);
},
Personal: (provider, options, net) => {
return new Personal(providerResolver.resolve(provider, net), options);
},
Shh: (provider, options, net) => {
return new Shh(providerResolver.resolve(provider, net), options);
},
Tdm: (provider, options, net) => {
return new Tdm(providerResolver.resolve(provider, net), options);
},
Chain: (provider, options, net) => {
return new Chain(providerResolver.resolve(provider, net), options);
},
Del: (provider, options, net) => {
return new Del(providerResolver.resolve(provider, net), options);
},
Pi: (provider, options, net) => {
return new Pi(providerResolver.resolve(provider, net), options);
}
};
}
}
export default Web3;