From 5142d1b82ea48260df64da7383b411266329e4fe Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 25 Mar 2020 06:26:31 -0500 Subject: [PATCH] release (#516) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fabo/fix gas (#250) * fix gas estimate * linted * fixed test * do not keep data sources (#251) * track failing transactions in Sentry (#249) * correctly set the tx schema for a failing tx (#248) * Fabo/remove per block caching as not working (#247) * remove per block caching as not working * fix memoized results Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * delete perblockcachedatasource (#253) * Ana/fix balances in actionmodal (#255) * fix action modal available balance * include regen * use dictionary for denomlookup * use correct events for received txs (#257) * enable account creation for some networks (#252) * network update time metric added (#256) * network update time metric added * added missing dep Co-authored-by: Fabian * Fix proposal deposit (#261) * Remove denom handling from getDeposit() * Revert undesired change * delete package-lock.json * localtestnet config change (#265) * Ana/handle "address not from this network" error (#263) * add check address function for all queries * apply suggestions * Ana/add fiatvalue to balances query (e-Money) (#262) * preparation * more preparation * add fiatvalue field to balances query * fix get account info * apply suggestions * apply one last suggestion * suggestions+ Co-authored-by: Fabian * Ana/emoney fix expected returns with inflation and totalbacked (#243) * fix expected returns with inflation and supply * minor fixes. dictionary * query exchange rates from emoney api * fix infinite expected returns * convert api url to const * add eur value to totalbackedvalue. totalngm gains * add important comment * finish calculation * lint * catch errors with sentry Co-authored-by: Fabian * readd coin conversion (#268) * delete amount field (#274) * Fabo/increase gas again (#271) * icrease gas again * fixed test * Fabo/load all txs (even if more then first page in response) (#270) * load all txs (even if more then first page in response) * improved handling of txs * missing renaming * fixed paginated load * add pagination fix also to cosmosV0-source Co-authored-by: iambeone Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * fixing issue with multiple senders in one event (#273) * fixing issue with multiple senders in one event * Update lib/source/cosmosV2-source.js Co-authored-by: Fabian * Fabo/allow signing for terra + emoney (#267) * allow signing for terra * readd coin conversion * enable actions for terra * fix correct terra testnet url * comments and guards * enabled more txs for emoney and fixed broadcasting * added a catch for wrongly formatted broadcast urls * recover default field. change some network titles (#277) * Fabo/add network data to API (#278) * non desctructive introduction of better address prefix wording * added address creator to API * adjusted test * added ledger app to networks config * add icon property to schema (#281) * add icon property to schema * fix network schema validation Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * filter out validator specific txs (#279) * Ana/balances coinreducer good fix (#269) * balances coinreducer good fix * refactored fiat value logic Co-authored-by: Fabian * Create network_integration.md * Update network_integration.md * Update network_integration.md * Fabo/avoid 500 errors (#288) * avoid using the latest query * cleanup * Ana/filter validator tx cross network and add txvalue reducer (#285) * filter validators cross network * add value reducer. necessary for multi claim txs * add validator txs filter also for cosmosv0 source * filter and make array only claim rewards msg value * filter txs by whitelist * change length in multi claim reward reducer * add withdrawvalidators * replace dictionary for set * refactor transaction snippet. avoid repetition * Ana/emoney upgrade (mergeable) (#282) * update emoney api_url * fix denom. add default fiat currency * fix rpc endpoint * fix value (my bad) (#293) * fix value (my bad) * trigger another ci flow * erase space * set correct new chain id (#294) * restart API * restart API * fix pr alert (#297) * Fabo/298 tendermint reconnect (#300) * reconnect on tendermint disconnect * cleanup * comments * Update cosmos-node-subscription.js * Fabo/299 trigger a chain hangup error (#301) * trigger a chain hangup error * increase chain hangup time * Apply suggestions from code review * Fabo/store validator addresses (#296) * add validator addresses to db * linted * ignore in local dev * revert * fixed fetch * comment * refactored db into constructor * cleanup * add clearTimeout to avoid reconnection hell (#306) * add clearTimeout to avoid reconnection hell * removed console.log * Aleksei/luniedb replaced (#303) * add validator addresses to db * linted * ignore in local dev * revert * fixed fetch * comment * refactored db into constructor * cleanup * replaced luniedb * linted Co-authored-by: Fabian * disable reconnection logic * clear polling interval for tendermint connection * simple api fixes (#310) * Fabo/remove tendermint (#311) * remove tendermint * fixed empty blockHeight issue * small refactoring * catch on fetches to get logging * delay block updates * add retry logic * refactored getBlockByHeight * remove pm2 dep * validator profiles were returned as array (#312) * remove pr github action (#316) * fixing caching issue and more (#315) * fixing caching issue and more * clear chain hangup timeout * timeout fixed * Update lib/block-listeners/cosmos-node-subscription.js Co-authored-by: Jordan Bibla * added terra_mainnet to networks (#309) * added terra_mainnet to networks * errors fix reverted * Ana/add multidenom rewards. necessary for emoney (#308) * add multidenom rewards. necessary for emoney * add rewards to overview. improve code location * lint * add filter rewards for multidenom * important fix * another important fix * fix cannot read propery constructor of undefined (#318) * change terra mainnet title * pushing something to trigger new build and to restart the node * trying out nylira's node * WIP: Ana/More Terra fixes (#323) * fixing my mess * move all rewards logic to terra * clearly signal single denom rewards * Revert "WIP: Ana/More Terra fixes (#323)" (#325) This reverts commit 408186a3ef743ca51d513eb91c937f49960e7492. * catch inside block polling function (#327) * Fabo/disable writing validator addresses for now (#329) * disable writing validator addresses for now * linted * flushing http cache (#332) * Transaction abstraction schema (#333) * tx abstraction proposal using union * Use Coin type * Cleanup, TransactionV2 * Cleanup, not multisend tx * Unsupported tx (like multisend) don't have details * Fabo/switch to docker swarm mode (#330) * swtich to docker swarm mode * typo * Update .github/workflows/development.yml * Ana/more terra fixes (***THE COMEBACK***) (#324) * fixing my mess * move all rewards logic to terra * clearly signal single denom rewards * error structure has changed. need to look into it * also return denom for single denom rewards * manage errors properly * delete comments * Update lib/reducers/terraV3-reducers.js * loop through transaction messages * doing crazy stuff * rewrite the crazy bit Co-authored-by: Fabian * cosmosv0 was missing the retry logic (#334) * add back validator to db logic (#335) * path_prefix added to network data (#338) * path_prefix added to network data * path_prefix replaced to slug * tests fixed * remove regen (#337) Co-authored-by: Jordan Bibla * Fabo+Mario/transaction abstraction (#336) * draft for transaction abstraction * use lunie message types * Add supported tx types * WIP * Draft new reducers * Fix msg types * Need to resolve type for TransactionDetails union * debug resolver * lint * Fix * Cleanup * fix some union issues * Almost done * Small fixes * Add userTransactionAddedV2 * Add userTransactionAddedV2 to resolvers Co-authored-by: Mario Pino * emoney fixes for fiatvalue (#345) * emoney fixes for fiatvalue * refactor with coinreducer * speaking functions are your friends * refactor ugly nested code * lint * add denoms lookups for terra and emoney (#346) * Ana/add only tokens gas prices 2nd attempt (#344) * add terra and emoney gas price. terra reducer * delete fiatvalue from get balances in cosmos * add emoney reducer * hyper important emoney fixes * fix for emoney denoms * change gas price to micro units * add emoney denoms to denomlookup * transform to microunit also for terra tokens * return null for emoney gas prices * add harcoded gas prices * correct emoney hardcoded values * hardcoded terra gas prices. not working * update hardcoded values to working ones * delete unrelated changes to gas prices * apply suggestions except coinreducer * they call me mr coinreducer * change amount for price. add gas price reducer * change naming in gas price reducer * add error message Co-authored-by: Fabian * fix rewards denoms (#351) * updating image on deploy (#352) * fix my mess once more (#353) * Ana/add gas prices to other networks (#350) * add gasprices to cosmos * format gas prices to three decimals * Apply suggestions from code review * Update lib/reducers/cosmosV0-reducers.js Co-authored-by: Fabian Co-authored-by: Jordan Bibla * added a tx success push, fallback (#354) * fix cosmos gas price (#355) * fix terra for new tmbalance (#358) * Fabo/new emoney rewards (#357) * intent to fix the emoney rewards * intent to fix emoney rewards * simplified code * comments * hack to fix reduce function * eligable -> eligible * correct reducer fix Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> Co-authored-by: Jordan Bibla * Aleksei/prevent constant db calls (#304) * add validator addresses to db * linted * ignore in local dev * revert * fixed fetch * comment * refactored db into constructor * cleanup * prevent constant db interaction * stored object structure changed * remove nesting in validators * filter validators list Co-authored-by: Fabian * limit txs pages load by two pages per request (#314) * limit txs pages load by two pages per request * delete block from loadpaginatedtxs * small fixes * Update lib/source/cosmosV2-source.js * linted Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> Co-authored-by: Fabian * linted * linted * Fabo/Use figment nodes (#362) * use api keys * add env variables for nodes * hard code api keys (#365) * fix ngm fiatvalue (#361) * hardcoded urls fix (#366) * WIP: Improve TransactionV2 implementation (#349) * Add from field to SendTx type * add amount to claim rewards transactions * convert to units in string coin reducer * fix typo * add multidenom string coinreducer for claim amount * Add UnknownTx to schema * Add BlockV2 type which returns TransactionV2 txs * Add blockV2 query that returns TransactionV2 txs * kill handling claim rewards amount * Update lib/reducers/cosmosV0-reducers.js Co-Authored-By: Fabian * Update lib/reducers/cosmosV0-reducers.js Co-Authored-By: Fabian * Cleanup * lint * Support claim rewards from multiple validators * Fix, cleanup Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> Co-authored-by: Fabian * Aleksei/fix db insert (#367) * fixed insert function to allow empty schema * Aleksei/statistics in the api (#364) * collecting statistics in the API * small fixes * fixes * changing address to key in clearOverviewedAddresses Co-authored-by: Aleksey Rudometov * add pageNumber to schema (#370) * add pageNumber to schema * file wasn't saved * trigger ci * added pagination to tx v2 api (#372) * Together with 3584: Ana/change fiatvalue to object (#360) * change fiatvalue to object * handle when selected currency is eur * include ngm fiatvalue fix * Ana/amount in claim rewards in transactions v2 (#373) * bring amount in claim rewards back to life * change to regex * simplify * make the regex understandable * Ana/add powered to networks (#377) * add powered by * more logical powered * add provider address for avatar * fix powere validation * Fabo/add network-type for selecting addrss and signing (#378) * add network-type for selecting addrss and signing * adjust according to new network_type param * add network type to network schema Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * fix staking denom (#379) * fix terra balances and overview (#380) * Fabo/allow to query experimental networks (#382) * all to query experimental networks * fix old small typo Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * First steps to integrate Polkadot (#376) * Add polkadot-testnet in networks.js * Install polkadot-api, polkadot-node-sub. draft * lint * lint * lint * add polkadotV0 source * add address creator * Update data/networks.js Co-Authored-By: Jordan Bibla * Update data/networks.js Co-Authored-By: Jordan Bibla * blocks, events * Cleanup * polling instead subscription * husky * updateDBValidatorProfiles * no wait for block data fetching, kind of stable * Add reducers file * block subscription works! * Cleanup, fix memory leak * lint, node * comment * Handle polkadot chain reorgs * Cleanup * Optimization, cleanup * Optimization * fixes, validators query working, cleanup * comment * lint * fix block time * handle polkadot chain hangups * cleanup * validator reducer * lint * wip * calculate and include a bunch of validator fields * add bech32_prefix address_prefix to networks.js * add 1 space so we dont break tests * remove chain reorg handling, more stable Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> Co-authored-by: Fabian Co-authored-by: Jordan Bibla * transactions loading time reduced (#383) * transactions loading time reduced * increased page number * add loki to docker-compose (#385) * add network type (#386) * removed livepeer from running in API (#390) * set polkadot to disabled (#392) * Ana/add totalstake-fiatvalue to Overview (#384) * add totalstake fiat value to overview * fix amount in totalstake fiatvalue * make new code more readable * Update lib/reducers/cosmosV0-reducers.js * refactor unit conversion Co-authored-by: Mario Pino * disable polkadot (#395) Co-authored-by: Fabian * Fabo/terra returns (#389) * better error logging * add result selector to query * split emoney getAllValidators from Terra * add expected returns querying to terra * filter out empty returns * remove not used code * missing return * limit decimals * fix not found in terra testnet * temporary hacks * Revert "temporary hacks" This reverts commit 88d0918af70489422d6d5d84909df1186a23fa1c. * Revert "fix not found in terra testnet" This reverts commit 19a4eca6eb4a9eb2050b368b270d4a39847e016a. * add terra testnet api * switch to show all decimals Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * fix all fiat values to 2 decimals (#399) * Ana/correct terra denoms (#398) * correct terra denoms * variable renaming Co-authored-by: Fabian * Ana/add fiatvalue in rewards (#396) * add fiatvalue to rewards * add fiatcurrency to rewards query * handle unsupported fiat currencies * apply suggestions * delete never used delegations parameter (#404) * fix terra getrewards and gas prices (#409) * reactivate kusama (#411) * Ana/fix repeated claim rewards transactions in transaction abstraction (#400) * fix terra repeated claim rewards transactions * much better fix * add claim rewards messages aggregator * try to apply suggestion * also not working * working 🎉 * change name and add comment * improved implementation by aggregating the claim messags correctly Co-authored-by: Fabian Weber * disable polkadot once more for release (#412) * readd memory limit (#413) * Use polling instead subscription in Kusama (#406) * uncomment polkadot * bug fixes * pollForNewBlock * mod getBlockHeight * add again commented api disconnect to not forget * enqueueAndPublishBlockAdded * re-subscribe on error * stringify error * stringify errors * api.isReady * Add delay to newBlockHandler * Ana/add balances to kusama (#405) * rudimentary balance * add some comment * Ana/switch polkadot to rest calls (#408) * add rewards and overview functions. not working * poll instead of subscribe to blocks * switch over to http provider * fix lint errors * use httpprovider * getting last block hash * get blockhash and header. but no height * back to normal. use mario node subscription * successfully get block height polling with http * get block hash from http. use polling * uncomment all other networks * pass the store to source classes * create the api only once * comment api.disconnect() * added polling fix and quick querying * fixed block height query * clean up * comment * cleanup and optimization Co-authored-by: Fabian Weber Co-authored-by: mariopino * remove unused dependency Co-authored-by: Bitcoinera Co-authored-by: Ana G <40721795+Bitcoinera@users.noreply.github.com> Co-authored-by: Fabian Weber * deactivate polkadot * trigger deploy * trigger CI * swtich to newer caddy version * activate polkadot again * deactivate again * Proposal to enable Kusama network (#424) * working state * cleanup * getBlockHeight() * update polkadot-api (#423) * fixing node_exporter call in Caddyfile (#418) * fixing send amount in statistics (#419) * fixing send amount in statistics * denom fixed * fix validator as selected fiat bug (#415) * Ana/correct terra denoms in activity (#425) * correct fix terra denoms in activity * delete correct terra denom as not needed * Ana/fix amount null in claim rewards (#416) * fix amount null in claim rewards * small refactor * apply suggestion * add release script to api (#426) * Add self stake to validators query (#433) * add self stake * Update lib/reducers/polkadotV0-reducers.js Co-Authored-By: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * lint Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> Co-authored-by: Bitcoinera * fix emoney balances denoms (#436) * [Polkadot] Add delegations query (#435) * first step, simplified query is working * lint * Get validator info from val dictionary * cleanup, fix comission * fix * faster solution * remove types we dont need in store * @Aleksei suggestions * fix * fix * simplify as @imbeone suggested * simplify, thanks @bitcoinera! * re adding array check * delegationReducer * fix * Ana/update polkadot balances (#441) * update polkadot balances * structs are strange * change comment * disable kusama * disable kusama * Ana/427 polkadot single validator query (#440) * save validators with operatoraddress as key * add check to wait to fetch validators * Update lib/resolvers.js Co-Authored-By: Fabian * Update lib/resolvers.js Co-Authored-By: Fabian * lint * fix delegations Co-authored-by: Fabian * Add denom decimal places to networks.js (#434) * lint * add decimals places, refactor POLKADOT_CONVERSION * add to schema * add to tests * refactor with @faboweb suggestions * fix * fix * fix * cleanup * apply suggestions * fix balances * add factor properly to network Co-authored-by: Bitcoinera * fix totalstake fiatvalue only returning euro (#442) * Fix commission for validators in Polkadot network (#447) * fix commission * comment * Fix expectedReturns for validators in Polkadot network (#446) * fix expectedReturns * change -- for null in getrewards and returns Co-authored-by: Bitcoinera * Ana/emoney validators load optimization (#430) * just for testing. hang up on validatorssets latest * fix emoney validators load * resolve conflict * remove experimental line * linted * Fabo/polkadot overview (#450) * add first steps towards overview * correct total * fixed total * fix getaccountinfo is not a funciton * delete hardcoded node rpc url * endpoint back to normal Co-authored-by: Bitcoinera * change polkadot node back to paritys one (#453) * Bump acorn from 5.7.3 to 5.7.4 (#454) Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4. - [Release notes](https://github.com/acornjs/acorn/releases) - [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fabo/improve delegations (#455) * improve delegations * removed timer * add hack for accounts with no nominations Co-authored-by: Bitcoinera * update polkadot api to latest (#456) * updated minimist (#457) * add empty getundelegations for polkadot (#458) * Update polkadot api to v1.7.1 (#465) * Ana/fix calculatefiatvalue when fiatcurrency not set (#462) * fix calculatefiatvalue when fiatcurrency not set * improve fix and comment * linted * Upgrade @polkadot/api to v1.8.0-beta.1 (#471) * Add intention validators in Polkadot network (#468) * Add timer to getAllValidators() * Fetch intention addresses for current session * wip * Add validators * working! getAllValidators exec time less than 10s * fix status * Cleanup * fix free balance (#474) * Fix delegations query in Polkadot network (#475) * fetch delegations from stored valid. staking info * Simplify * Cleanup * tx type in v2 subscriptions changed to TransactionV2 (#476) * Ana/add new release script copying fe (#479) * add new release script copying fe * add node executor to circleci * add aliases for circleci * missed one alias * change uluna gas price to recommended one (#481) * fixing claim rewards pubsub publishing (#480) * fixing claim rewards pubsub publishing * only get stakingDenom once Co-authored-by: Fabian Weber * Fabo/fix failed txs parsing (#486) * publish v2 txs and fix failed txs parsing * linted * Fabo/add logs to txs v2 (#487) * add logs to txs v2 * better logic * michiel/move yarn test to separate step for circleci (#482) * migrate test.yml github workflow to circleci config.yml fix executor from web to node * remove test.yml workflow file * refactor address extraction into reducers (#488) * add polkadot prefix (#489) * add polkadot prefix * change address prefix to be a number * Fabo/broadcast polkadot txs (#461) * first steps to broadcast polkadot txs * remove package-lock * fixed api init * remove debugger * working broadcasting * working * ignore polkadot in tests * Update lib/controller/transaction/index.js Co-Authored-By: Jordan Bibla Co-authored-by: Jordan Bibla * Fabo/wait for data ready (#497) * allow to wait for data to be ready (cherry picked from commit 744d9b3b445286a9637fdadbeb5c473165cec58e) * wait for data to be ready (cherry picked from commit b6d665fd88ae22e5e3753249f27730eb12faebcb) * keep store in cosmos source (cherry picked from commit a6bb9f023eb56fb57d9a0f3a3ae12c997f6d04e3) * Update lib/resolvers.js * adds key to identify and sort txs (#492) * improve blockHandler logic (#498) (cherry picked from commit b67fab47adbf5a19caf99e17a9395e62419e8dad) * Fabo/enable terra governance (#501) * enable terra governance * also enable proposals in terra testnet * Ana/send all claimed rewards to fe (#493) * send all claimed rewards to fe * refactor reward coin reducer * Fabo/allow single network run (#495) * allow running a single network * readme * apply fix in networks * Update lib/apollo.js Co-authored-by: Bitcoinera * Ana/refactor network capabilities (#502) * refactor network capabilities * refactor to have just a dictionary * fix terra testnet. deleted accidentally testnet Co-authored-by: Fabian * Fabo/fix emoney reward precision (#504) * fix emoney rewards precision * comment * remove polkadot log spamming * add logging for failing tx parsing * more kusama log removal * Fabo/improve emoney loading (#494) * allow to wait for data to be ready * wait for data to be ready * improve blockHandler logic * keep store in cosmos source * centralize emoney exchange queries * fixed balances nto available * precalculate all exchange rates * remove mock values * add sentry to nested block handler * linted * keep old emoney tokens for now Co-authored-by: Bitcoinera * fix transaction log parsing * better debugging * prevent transactionReducerV2 from returning undefined (#508) * prevent transactionReducerV2 from returning undefined * Update lib/reducers/cosmosV0-reducers.js Co-Authored-By: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * linting fix Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> * fix one more log parsing issue * WIP Ana/make estimate a query (#509) * first attempt for estimate * fix estimate schema * lint * Polkadot send transaction extraction (#500) * tx logic draft * fix lint * wip * lint * working for send tx type * should work publishing send tx! * correct data is being passed to publishers * cleanup * working with extrinsics * implement coin reducer * Update lib/reducers/polkadotV0-reducers.js Co-Authored-By: Fabian * Update lib/reducers/polkadotV0-reducers.js Co-Authored-By: Fabian Co-authored-by: Fabian * Ana/add emoney mainnet (#511) * first preparations * Update data/networks.js Co-Authored-By: Fabian * Update data/networks.js Co-Authored-By: Fabian * add correct chainid * add validators poller for release * check emoney mainnet validators recursively Co-authored-by: Fabian * fix no iterable for claimrewards amounts (#515) Co-authored-by: Ana G. <40721795+Bitcoinera@users.noreply.github.com> Co-authored-by: iambeone Co-authored-by: Mario Pino Co-authored-by: Jordan Bibla Co-authored-by: Bitcoinera Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Michiel Mulders --- data/network-capabilities.js | 17 +++++++++++ data/networks.js | 21 +++++++++++++ .../cosmos-node-subscription.js | 10 +++++++ .../emoney-release-validators-poller.js | 8 +++++ lib/reducers/cosmosV0-reducers.js | 15 ++++++---- lib/source/emoneyV0-source.js | 30 ++++++++++++++----- 6 files changed, 88 insertions(+), 13 deletions(-) create mode 100644 lib/block-listeners/emoney-release-validators-poller.js diff --git a/data/network-capabilities.js b/data/network-capabilities.js index 92269904e8..1d29768056 100644 --- a/data/network-capabilities.js +++ b/data/network-capabilities.js @@ -67,6 +67,23 @@ const getNetworkCapabilities = { action_vote: false, action_proposal: false }, + "emoney-mainnet": { + feature_session: true, + feature_explore: true, + feature_portfolio: true, + feature_validators: true, + feature_proposals: false, + feature_activity: true, + feature_explorer: true, + action_send: true, + action_claim_rewards: true, + action_delegate: true, + action_redelegate: true, + action_undelegate: true, + action_deposit: false, + action_vote: false, + action_proposal: false + }, "emoney-testnet": { feature_session: true, feature_explore: true, diff --git a/data/networks.js b/data/networks.js index fdf7a5f499..da1a535e5d 100644 --- a/data/networks.js +++ b/data/networks.js @@ -98,6 +98,27 @@ module.exports = [ icon: 'https://app.lunie.io/img/networks/terra-testnet.png', slug: 'terra-testnet' }, + { + id: 'emoney-mainnet', + title: 'e-Money', + chain_id: 'emoney-1', + api_url: 'https://emoney.validator.network/light', + rpc_url: 'wss://emoney.validator.network/websocket', + bech32_prefix: 'emoney', + address_prefix: 'emoney', + address_creator: 'cosmos', + ledger_app: 'cosmos', + network_type: 'cosmos', + source_class_name: 'source/emoneyV0-source', + block_listener_class_name: 'block-listeners/cosmos-node-subscription', + testnet: true, + ...getNetworkCapabilities[`emoney-mainnet`], + default: false, + stakingDenom: 'NGM', + enabled: true, + icon: 'https://app.lunie.io/img/networks/emoney-mainnet.png', + slug: 'emoney' + }, { id: 'emoney-testnet', title: 'e-Money Testnet', diff --git a/lib/block-listeners/cosmos-node-subscription.js b/lib/block-listeners/cosmos-node-subscription.js index 0bfa2d0400..217e4c32d9 100644 --- a/lib/block-listeners/cosmos-node-subscription.js +++ b/lib/block-listeners/cosmos-node-subscription.js @@ -7,6 +7,7 @@ const { const Sentry = require('@sentry/node') const database = require('../database') const config = require('../../config.js') +const { pollForValidators } = require('./emoney-release-validators-poller') const POLLING_INTERVAL = 1000 const EXPECTED_MAX_BLOCK_WINDOW = 120000 @@ -31,6 +32,15 @@ class CosmosNodeSubscription { } async pollForNewBlock() { + if (this.network.id === `emoney-mainnet`) { + const validators = await pollForValidators(this.network) + if (!validators || validators.length <= 0) { + setTimeout(async () => { + this.pollForNewBlock() + }, POLLING_INTERVAL) + return + } + } const cosmosAPI = new this.CosmosApiClass(this.network, this.store) await this.checkForNewBlock(cosmosAPI) diff --git a/lib/block-listeners/emoney-release-validators-poller.js b/lib/block-listeners/emoney-release-validators-poller.js new file mode 100644 index 0000000000..208c9e8d59 --- /dev/null +++ b/lib/block-listeners/emoney-release-validators-poller.js @@ -0,0 +1,8 @@ +async function pollForValidators(eMoneyNetwork) { + const { result } = await global.fetch( + `${eMoneyNetwork.api_url}/staking/validators` + ) + return result +} + +module.exports = { pollForValidators } diff --git a/lib/reducers/cosmosV0-reducers.js b/lib/reducers/cosmosV0-reducers.js index d9fd36c1ad..238a10ca3d 100644 --- a/lib/reducers/cosmosV0-reducers.js +++ b/lib/reducers/cosmosV0-reducers.js @@ -262,7 +262,10 @@ function denomLookup(denom) { eeur: 'eEUR', echf: 'eCHF', ejpy: 'eJPY', - eusd: 'eUSD' + eusd: 'eUSD', + edkk: 'eDKK', + enok: 'eNOK', + esek: 'eSEK' } return lookup[denom] ? lookup[denom] : denom.toUpperCase() } @@ -780,10 +783,12 @@ function claimRewardsDetailsReducer( function claimRewardsAmountReducer(transaction, reducers, stakingDenom) { if (!transaction.success) { - return { - amoun: 0, - denom: stakingDenom - } + return [ + { + amoun: 0, + denom: stakingDenom + } + ] } return reducers.rewardCoinReducer( transaction.events diff --git a/lib/source/emoneyV0-source.js b/lib/source/emoneyV0-source.js index c891df2bbe..05917ff56e 100644 --- a/lib/source/emoneyV0-source.js +++ b/lib/source/emoneyV0-source.js @@ -4,7 +4,8 @@ const fetch = require('node-fetch') const Sentry = require('@sentry/node') const fiatExchangeRateApi = `https://api.exchangeratesapi.io/latest?` -const EMoneyAPIUrl = `https://beta-api.e-money.com/v1/` +const EMoneyAPIUrlMainnet = `https://api.e-money.com/v1/` +const EMoneyAPIUrlTestnet = `https://beta-api.e-money.com/v1/` const gasPrices = [ { denom: 'echf', @@ -27,12 +28,25 @@ const gasPrices = [ price: '0.800' } ] -const supportedFiatCurrencies = new Set(['EUR', 'USD', 'GBP', 'CHF', 'JPY']) +const supportedFiatCurrencies = new Set([ + 'EUR', + 'USD', + 'GBP', + 'CHF', + 'JPY', + 'DKK', + 'NOK', + 'SEK' +]) class EMoneyV0API extends TerraV3API { setReducers() { this.reducers = require('../reducers/emoneyV0-reducers') this.gasPrices = gasPrices + this.apiURL = + this.networkId === 'emoney-mainnet' + ? EMoneyAPIUrlMainnet + : EMoneyAPIUrlTestnet } // additional block handling by network @@ -62,9 +76,9 @@ class EMoneyV0API extends TerraV3API { await Promise.all([ this.getTokensInflations(), this.getTotalBackedValues() - ]).then(async ([inflatations, totalBackedValues]) => { + ]).then(async ([inflations, totalBackedValues]) => { store.totalNetworkAnnualRewards = await this.reducers.getTotalNetworkAnnualRewards( - inflatations, + inflations, totalBackedValues ) }) @@ -83,7 +97,7 @@ class EMoneyV0API extends TerraV3API { // Here we query for the current inflation rates for all the backed tokens async getTokensInflations() { const inflations = await this.get(`inflation/current`) - return inflations.result.assets.filter(asset => asset.denom !== `x3chf`) + return inflations.result.assets } // Here we query for the current total supply for all the backed tokens @@ -141,7 +155,7 @@ class EMoneyV0API extends TerraV3API { // firt check if the selectedFiatCurrency is a supported currency if (!supportedFiatCurrencies.has(selectedFiatCurrency)) { throw new Error( - 'We currently only support "EUR", "USD", "GBP", "CHF" and "JPY" as fiat currencies. Remember they should be written in uppercases' + 'We currently only support "EUR", "USD", "GBP", "DKK", "NOK", "SEK", "CHF" and "JPY" as fiat currencies. Remember they should be written in uppercases' ) } @@ -164,11 +178,11 @@ class EMoneyV0API extends TerraV3API { } async fetchEmoneyTokenExchangeRates() { - const rates = await fetch(`${EMoneyAPIUrl}rates.json`) + const rates = await fetch(`${this.apiURL}rates.json`) .then(r => r.json()) .catch(err => { Sentry.withScope(function(scope) { - scope.setExtra('fetch', `${EMoneyAPIUrl}rates.json`) + scope.setExtra('fetch', `${this.apiURL}rates.json`) Sentry.captureException(err) }) })