Skip to content

Commit

Permalink
release (#558)
Browse files Browse the repository at this point in the history
* 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. <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>
Co-authored-by: Ana G. <[email protected]>

* 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 <[email protected]>

* 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. <[email protected]>

* filter out validator specific txs (#279)

* Ana/balances coinreducer good fix (#269)

* balances coinreducer good fix

* refactored fiat value logic

Co-authored-by: Fabian <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 408186a.

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>
Co-authored-by: Jordan Bibla <[email protected]>

* 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. <[email protected]>
Co-authored-by: Jordan Bibla <[email protected]>

* 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 <[email protected]>

* 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. <[email protected]>
Co-authored-by: Fabian <[email protected]>

* 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 <[email protected]>

* Update lib/reducers/cosmosV0-reducers.js

Co-Authored-By: Fabian <[email protected]>

* Cleanup

* lint

* Support claim rewards from multiple validators

* Fix, cleanup

Co-authored-by: Ana G. <[email protected]>
Co-authored-by: Fabian <[email protected]>

* 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 <[email protected]>

* 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. <[email protected]>

* 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. <[email protected]>

* 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 <[email protected]>

* Update data/networks.js

Co-Authored-By: Jordan Bibla <[email protected]>

* 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. <[email protected]>
Co-authored-by: Fabian <[email protected]>
Co-authored-by: Jordan Bibla <[email protected]>

* 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 <[email protected]>

* disable polkadot (#395)

Co-authored-by: Fabian <[email protected]>

* 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. <[email protected]>

* fix all fiat values to 2 decimals (#399)

* Ana/correct terra denoms (#398)

* correct terra denoms

* variable renaming

Co-authored-by: Fabian <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>
Co-authored-by: mariopino <[email protected]>

* remove unused dependency

Co-authored-by: Bitcoinera <[email protected]>
Co-authored-by: Ana G <[email protected]>
Co-authored-by: Fabian Weber <[email protected]>

* 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. <[email protected]>

* lint

Co-authored-by: Ana G. <[email protected]>
Co-authored-by: Bitcoinera <[email protected]>

* 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 <[email protected]>

* Update lib/resolvers.js

Co-Authored-By: Fabian <[email protected]>

* lint

* fix delegations

Co-authored-by: Fabian <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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](acornjs/acorn@5.7.3...5.7.4)

Signed-off-by: dependabot[bot] <[email protected]>

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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

Co-authored-by: Jordan Bibla <[email protected]>

* 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 <[email protected]>

* Ana/refactor network capabilities (#502)

* refactor network capabilities

* refactor to have just a dictionary

* fix terra testnet. deleted accidentally testnet

Co-authored-by: Fabian <[email protected]>

* 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 <[email protected]>

* 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. <[email protected]>

* linting fix

Co-authored-by: Ana G. <[email protected]>

* 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 <[email protected]>

* Update lib/reducers/polkadotV0-reducers.js

Co-Authored-By: Fabian <[email protected]>

Co-authored-by: Fabian <[email protected]>

* Ana/add emoney mainnet (#511)

* first preparations

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* add correct chainid

* add validators poller for release

* check emoney mainnet validators recursively

Co-authored-by: Fabian <[email protected]>

* fix no iterable for claimrewards amounts (#515)

* emoney mainnet is mainnet (#517)

* remove emoney release hack (#520)

* fix emoney mainnet expected returns (#522)

* useless console.log removed (#519)

* update emoney ngm gasprice (#525)

* Michiel/make clear separation between v0 and v2 reducers (#530)

* Replace transactionReducer with v2 for pollTransactionSuccess

* Replace transactionReducer with v2 for pollTransactionSuccess

* Fix structure

* Make clear seperation between v0 and v2 reducers

* Fix problem publishing transaction

* Fix pollTransactionSuccess

* Fix pollTransactionSuccess

* Ana/fix claim rewards denom for terra and emoney (#534)

* fix claim rewards denom for terra and emoney

* fix again

* Ana/fix expected returns cosmos and emoney (#536)

* fix expected returns for cosmos and emoney

* add missing property in type validator

* delete delegatorshares from type validator

* Ana/add gas estimates query (#503)

* add network fees query

* fix schema

* refactor using networkid with hyphens

* return only estimate for a transaction type

* add gas estimates to network object

* remove network fees from queries

* revert last two commits manually

* add default to network gas estimates

* apply suggestion

* michiel/remove reducer v0 (#535)

* Remove reducer v0

* Update cosmosV0-source.js

* linted

Co-authored-by: Fabian <[email protected]>

* comment instructions on github templates (#539)

* Ana/fix gasestimate query and raise terra default gas estimate (#538)

* fix networkfees query

* raise terra default gas estimate

* Michiel/add akash portfolio (#541)

* first steps

* Integrate validators feature for akashv0

* Simplify extending Cosmos logic

* Remove unused imports

* Uncomment networks

* Enable portfolio for Akash

* Commnet livepeer mainnet network

* Commnet livepeer mainnet network

* fix validators expected returns

* apply code review

* use proper reducers

* add gas prices

* fix totalstake and delegation in general

* fix api_url

* correct staking denom to cosmossdk default for now

* add also default stake gas price

Co-authored-by: Bitcoinera <[email protected]>

* Michiel/add Akash validators (#540)

* first steps

* Integrate validators feature for akashv0

* Simplify extending Cosmos logic

* Remove unused imports

* Uncomment networks

* Commnet livepeer mainnet network

* fix validators expected returns

* apply code review

* Fix version transactionsByHeight

Co-authored-by: michielmulders <[email protected]>

* switch to the used getBlockByHeightV2 function in polkadot (#545)

* Ana&Mario/add missing coinlookups (#546)

* add missing coinlookups

* fix chaintoview conversion type

* fix claimrewardsamount reducer. get all (#548)

* fix polkadot error (#552)

* Split rewards from other queries (#543)

* moving rewards to resolved in overview

* lint

* working

* Add totalRewards resolver in Overview

* fix

* cleanup

* cleanup

* cleanup

* getViewDenom() is not async

* add rewardsV2 query

* add coinLookup property to all networks

* Update lib/source/cosmosV0-source.js

Co-Authored-By: Fabian <[email protected]>

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* Update data/networks.js

Co-Authored-By: Fabian <[email protected]>

* suggestions, cleanup

* Remove rewardsV2

* revert schema changes

Co-authored-by: Fabian <[email protected]>
Co-authored-by: Bitcoinera <[email protected]>

* raise terra gas estimate for claiming (#553)

* Add tests checkAddress and getRewards (#555)

Co-authored-by: Ana G. <[email protected]>
Co-authored-by: iambeone <[email protected]>
Co-authored-by: Mario Pino <[email protected]>
Co-authored-by: Jordan Bibla <[email protected]>
Co-authored-by: Bitcoinera <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michiel Mulders <[email protected]>
  • Loading branch information
8 people authored Apr 1, 2020
1 parent 82c45b9 commit d70b0cc
Show file tree
Hide file tree
Showing 10 changed files with 232 additions and 33 deletions.
3 changes: 2 additions & 1 deletion data/network-fees.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ const getNetworkTransactionGasEstimates = (networkId, transactionType) => {
}

const terraGasEstimates = {
default: 300000
default: 300000,
ClaimRewardsTx: 550000
}

const cosmosGasEstimates = {
Expand Down
19 changes: 0 additions & 19 deletions lib/reducers/cosmosV0-reducers.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
const { flatten } = require('lodash')
const BigNumber = require('bignumber.js')

/**
Expand Down Expand Up @@ -375,22 +374,12 @@ async function overviewReducer(
balances,
delegations,
undelegations,
rewards,
stakingDenom,
fiatValueAPI,
fiatCurrency,
reducers
) {
stakingDenom = denomLookup(stakingDenom)

const totalRewards = flatten(rewards)
// this filter is here for multidenom networks. If there is the field denoms inside rewards, we filter
// only the staking denom rewards for 'totalRewards'
.filter(reward =>
reward.denom ? denomLookup(reward.denom) === stakingDenom : reward
)
.reduce((sum, { amount }) => BigNumber(sum).plus(amount), 0)
.toFixed(6)
const liquidStake = BigNumber(
(
balances.find(({ denom }) => denomLookup(denom) === stakingDenom) || {
Expand All @@ -409,14 +398,6 @@ async function overviewReducer(
const totalStake = liquidStake.plus(delegatedStake).plus(undelegatingStake)

return {
rewards:
// there are some accounts which are not staking and therefore have no rewards
rewards[0]
? rewards[0].constructor === Array
? reducers.rewardReducer(rewards)
: rewards
: null,
totalRewards: totalRewards,
liquidStake: liquidStake,
totalStake,
totalStakeFiatValue: fiatValueAPI
Expand Down
35 changes: 35 additions & 0 deletions lib/resolvers.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const { getNetworkTransactionGasEstimates } = require('../data/network-fees')
const database = require('./database')
const config = require('../config.js')
const { logOverview } = require('./statistics')
const BigNumber = require('bignumber.js')

function createDBInstance(network) {
const networkSchemaName = network ? network.replace(/-/g, '_') : false
Expand Down Expand Up @@ -181,7 +182,41 @@ const resolvers = {
accountInformation: (account, _, { dataSources }) =>
remoteFetch(dataSources, account.networkId).getAccountInfo(
account.address
),
rewards: async (
{ networkId, address, fiatCurrency },
_,
{ dataSources }
) => {
await localStore(dataSources, networkId).dataReady
const validatorsDictionary = localStore(dataSources, networkId).validators
return remoteFetch(dataSources, networkId).getRewards(
address,
validatorsDictionary,
fiatCurrency
)
},
totalRewards: async (
{ networkId, address, fiatCurrency },
_,
{ dataSources }
) => {
await localStore(dataSources, networkId).dataReady
const validatorsDictionary = localStore(dataSources, networkId).validators
const rewards = await remoteFetch(dataSources, networkId).getRewards(
address,
validatorsDictionary,
fiatCurrency
)
const stakingDenom = await remoteFetch(
dataSources,
networkId
).getStakingViewDenom()
return rewards
.filter(({ denom }) => denom === stakingDenom)
.reduce((sum, { amount }) => BigNumber(sum).plus(amount), 0)
.toFixed(6)
}
},
Proposal: {
validator: (proposal, _, { dataSources }) => {
Expand Down
13 changes: 6 additions & 7 deletions lib/source/cosmosV0-source.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class CosmosV0API extends RESTDataSource {
this.validatorConsensusBech32Prefix = `${network.address_prefix}valcons`
this.gasPrices = gasPrices
this.store = store
this.viewDenom = network.coinLookup[0].viewDenom

this.setReducers()
}
Expand Down Expand Up @@ -56,7 +57,7 @@ class CosmosV0API extends RESTDataSource {
if ((await this.cache.getTotalSize()) > 100000) {
await this.cache.flush()
}
// cleareing memoizedResults
// clearing memoizedResults
this.memoizedResults.clear()
try {
return await this.get(url, null, { cacheOptions: { ttl: 1 } }) // normally setting cacheOptions should be enought, but...
Expand Down Expand Up @@ -87,6 +88,10 @@ class CosmosV0API extends RESTDataSource {
return stakingParameters.bond_denom
}

getStakingViewDenom() {
return this.viewDenom
}

async getSignedBlockWindow() {
const slashingParams = await this.query('/slashing/parameters')
return slashingParams.signed_blocks_window
Expand Down Expand Up @@ -493,17 +498,11 @@ class CosmosV0API extends RESTDataSource {
),
this.getStakingDenom()
])
const rewards = await this.getRewards(
delegatorAddress,
validatorsDictionary,
fiatCurrency
)
const fiatValueAPI = this.calculateFiatValue ? this : null
return this.reducers.overviewReducer(
balances,
delegations,
undelegations,
rewards,
stakingDenom,
fiatValueAPI,
fiatCurrency,
Expand Down
1 change: 1 addition & 0 deletions lib/source/cosmosV2-source.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ class CosmosV2API extends CosmosV0API {
const result = await this.query(
`distribution/delegators/${delegatorAddress}/rewards`
)

return (result.rewards || [])
.filter(({ reward }) => reward && reward.length > 0)
.map(({ reward, validator_address }) =>
Expand Down
9 changes: 6 additions & 3 deletions lib/source/polkadotV0-source.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const BigNumber = require('bignumber.js')
class polkadotAPI {
constructor(network, store) {
this.network = network
this.stakingViewDenom = network.coinLookup[0].viewDenom
this.setReducers()
this.store = store
}
Expand Down Expand Up @@ -49,7 +50,7 @@ class polkadotAPI {
)

return this.reducers.blockReducer(
this.networkId,
this.network.id,
blockHeight,
blockHash,
sessionIndex.toNumber(),
Expand Down Expand Up @@ -171,8 +172,6 @@ class polkadotAPI {
totalStake: accountBalances[0].total,
totalStakeFiatValue: '',
liquidStake: accountBalances[0].amount,
totalRewards: '',
rewards: undefined,
accountInformation: undefined
}
}
Expand Down Expand Up @@ -202,6 +201,10 @@ class polkadotAPI {
getUndelegationsForDelegatorAddress() {
return []
}

getStakingViewDenom() {
return this.stakingViewDenom
}
}

module.exports = polkadotAPI
8 changes: 5 additions & 3 deletions lib/statistics.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,11 @@ const logOverview = (overview, fingerprint) => {
data.value = overview.totalStake.toString()
store(data)
// store totalRewards
data.action = 'totalRewards'
data.value = overview.totalRewards.toString()
store(data)
if (overview.totalRewards) {
data.action = 'totalRewards'
data.value = overview.totalRewards.toString()
store(data)
}
// store rewards
// summing rewards with one denom
if (overview.rewards) {
Expand Down
25 changes: 25 additions & 0 deletions tests/source/cosmosv0-source.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const CosmosV0API = require('../../lib/source/cosmosV0-source')
const networks = require('../../data/networks')

describe('Cosmos V0 API', function() {
describe('checkAddress()', function() {
let api, cosmosNetworkConfig

beforeEach(() => {
cosmosNetworkConfig = networks.find(
network => network.id === 'cosmos-hub-testnet'
)
api = new CosmosV0API(cosmosNetworkConfig, {})
})

it('When a valid prefix is passed, it should not throw an error', () => {
expect(() =>
api.checkAddress(`${cosmosNetworkConfig.bech32_prefix}12345ABCDE`)
).not.toThrow()
})

it('When an invalid prefix is passed, it should throw an error', () => {
expect(() => api.checkAddress('12345ABCDE')).toThrow()
})
})
})
98 changes: 98 additions & 0 deletions tests/source/cosmosv2-source.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
const CosmosV2API = require('../../lib/source/cosmosV2-source')
const networks = require('../../data/networks')
const {
delegatorAddress,
mockValidatorsDictionary,
delegatorRewards
} = require('./mock_data/delegators')

let mockDelegatorRewards = { ...delegatorRewards }
jest.mock('apollo-datasource-rest', () => {
class MockRESTDataSource {
constructor() {
this.memoizedResults = {
clear: jest.fn()
}
}

get() {
return mockDelegatorRewards
}
}

return {
RESTDataSource: MockRESTDataSource,
HTTPCache: class MockHTTPCache {}
}
})

describe('Cosmos V2 API', function() {
describe('getRewards()', function() {
let api, cosmosNetworkConfig

beforeEach(() => {
cosmosNetworkConfig = networks.find(
network => network.id === 'cosmos-hub-testnet'
)
api = new CosmosV2API(cosmosNetworkConfig, {})
mockDelegatorRewards = JSON.parse(JSON.stringify(delegatorRewards))
})

it('When an existing delegator address is passed, it should return the calculated rewards', async () => {
//Act
const result = await api.getRewards(
delegatorAddress,
mockValidatorsDictionary
)

//Assert
expect(result[0]).toHaveProperty('amount')
expect(result[0]).toHaveProperty('denom')
expect(result[0].validator).toEqual(
mockValidatorsDictionary[delegatorAddress]
)
})

it('When an existing delegator address has no rewards, it should return no rewards', async () => {
//Arrange
mockDelegatorRewards.result.rewards = []

//Act & Assert
await expect(
api.getRewards(delegatorAddress, mockValidatorsDictionary)
).resolves.toEqual([])
})

it('When an existing delegator address is passed with a reward 49000000 (umuon), it should return amount 49 (muon)', async () => {
//Arrange
mockDelegatorRewards.result.rewards[0].reward[0].amount = 49000000

//Act & Assert
await expect(
api.getRewards(delegatorAddress, mockValidatorsDictionary)
).resolves.toEqual([
{
amount: '49.000000',
denom: 'MUON',
validator: mockValidatorsDictionary[delegatorAddress]
}
])
})

it('When an existing delegator address is passed with a reward < 1 (umuon), it should return amount = 0 (muon)', async () => {
//Arrange
mockDelegatorRewards.result.rewards[0].reward[0].amount = 0.05

//Act & Assert
await expect(
api.getRewards(delegatorAddress, mockValidatorsDictionary)
).resolves.toEqual([
{
amount: '0.000000',
denom: 'MUON',
validator: mockValidatorsDictionary[delegatorAddress]
}
])
})
})
})
54 changes: 54 additions & 0 deletions tests/source/mock_data/delegators.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
const delegatorAddress = 'cosmosvaloper1y3v65vhz5f93k8uk7vnz5v7yr7ks5gdcumgcqr'

const mockValidatorsDictionary = {
[delegatorAddress]: {
networkId: 'cosmos-hub-testnet',
operatorAddress: delegatorAddress,
consensusPubkey:
'cosmosvalconspub1zcjduepqndtvyf7ggaamy2qzafjm9fnn3us4fllv89wtl40nt586q5g90rnsaxtvlz',
jailed: false,
details: '',
website: 'https://fissionlabs.io',
identity: '',
name: 'Fission Labs',
votingPower: '0.084015352',
startHeight: '0',
uptimePercentage: 1,
tokens: '60002.000010',
commissionUpdateTime: '2019-12-20T17:00:00Z',
commission: '0.500000000000000000',
maxCommission: '1.000000000000000000',
maxChangeCommission: '1.000000000000000000',
status: 'ACTIVE',
statusDetailed: 'active',
delegatorShares: '60002000010.000000000000000000'
}
}

const delegatorRewards = {
result: {
rewards: [
{
validator_address: delegatorAddress,
reward: [
{
denom: 'umuon',
amount: '0.107080042987452090'
}
]
}
],
total: [
{
denom: 'umuon',
amount: '0.107080042987452090'
}
]
}
}

module.exports = {
delegatorAddress,
mockValidatorsDictionary,
delegatorRewards
}

0 comments on commit d70b0cc

Please sign in to comment.