UNPKG

pweb3

Version:

Pchain JavaScript API

154 lines (150 loc) 5.06 kB
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;