Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature][oracle] Add whitelist and Update reward distribution mechanism #250

Merged

Conversation

yun-yeo
Copy link
Contributor

@yun-yeo yun-yeo commented Oct 14, 2019

Summary of changes

  • Create a whitelist param that stores an array of denoms that are whitelisted by the protocol. Governance can create a ParamChangeProposal that adds and removes from the whitelisted array. Check whitelist in the oracle endblocker that checks whether the denom is in the whitelist before adding the exchange rate to the store.
  • Edit the oracle Reward Pool of a VotePeriod = oracle module account / (n blocks) * # of blocks in each VotePeriod. n should be an oracle store parameter (RewardDistributionPeriod)
  • Oracle module account should be whitelisted in the bank module such that users can donate funds to the oracle module account

closes #249

Report of required housekeeping

  • Github issue OR spec proposal link
  • Wrote tests
  • Updated relevant documentation (docs/)
  • Added a relevant changelog entry: clog add [section] [stanza] [message]

(FOR ADMIN) Before merging

  • Added appropriate labels to PR
  • Squashed all commits, uses message "Merge pull request #XYZ: [title]" (coding standards)
  • Confirm added tests are consistent with the intended behavior of changes
  • Ensure all tests pass

Yun added 2 commits October 14, 2019 15:55
* change RewardFraction to RewardDistributionPeriod which indicates (RewardPool * VotePeriod / RewardDistributionPeriod) will be distributed as a reward to the oracle ballot winners in every vote period
@yun-yeo yun-yeo added the enhancement New feature or request label Oct 14, 2019
@yun-yeo yun-yeo self-assigned this Oct 14, 2019
@yun-yeo yun-yeo force-pushed the feature/oracle-add-whitelist-and-update-reward-distribution branch from 1655e0b to ce700f2 Compare October 14, 2019 09:36
@yun-yeo yun-yeo requested a review from dokwon October 14, 2019 09:38
@codecov
Copy link

codecov bot commented Oct 14, 2019

Codecov Report

Merging #250 into develop will decrease coverage by 0.66%.
The diff coverage is 69.84%.

@@             Coverage Diff             @@
##           develop     #250      +/-   ##
===========================================
- Coverage    68.52%   67.86%   -0.67%     
===========================================
  Files           71       70       -1     
  Lines         3117     3040      -77     
===========================================
- Hits          2136     2063      -73     
- Misses         866      870       +4     
+ Partials       115      107       -8

Copy link
Contributor

@dokwon dokwon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove oracle slashing. There are too many scenarios where a validator may be compelled to turn off validator votes or be incentivised to vote against the consensus. Until oracle voting stabilizes, do not think it should be a slashing condition.

@dokwon dokwon merged commit 8042329 into develop Oct 15, 2019
@dokwon dokwon deleted the feature/oracle-add-whitelist-and-update-reward-distribution branch October 15, 2019 09:26
dokwon pushed a commit that referenced this pull request Dec 10, 2019
* add chain id check to update endblocker only for columbus-2

* move chain-id check to update module

* add chain id check to update endblocker only for columbus-2

* move chain-id check to update module

* add gitattributes to prevent linguist from checking vendor code and documentations

* newline at the end of file

* Feature/recover-old-hd-path (#193)

* add chain id check to update endblocker only for columbus-2

* move chain-id check to update module

* upgrade $terracli keys add to support old mnemonic support

* add address selection when interactive mode is enabled

* remove tmp keys folder

* change log update

* gitignore update

* add old-hd-path option to give option for recover

* change mock ledger to accept custom coin type from config

* Bugfix/peek epoch seigniorage (#196)

* change PeekEpochSeigniorage to compute seigniorage by subtracting previous issuance from current issuance

* add clog

* test code update

* Bugfix/treasury update target epoch (#198)

* add chain id check to update endblocker only for columbus-2

* move chain-id check to update module

* change treasury endblocker upate target to next epoch

* Updated CHANGELOG

* Changed PR template

* update docs hints

* update wording on some hints

* correct minor typo in swagger

* Feature/ Minor goreleaser changes (#223)

* set same go release version as tests

* replace deprecated `archive`

* update to cosmos-v0.37.0

* runsim update

* distribute oracle rewards to ballot winner immediately after tallying

* add goverance module and register treasury tax-rate & reward weight update gov proposal

* apply constant product swap

* fix discord link in readme (#229)

* change replenish&update pools to update only terra pool and do constant product to compute luna pool

* change swap to do not add min-spared to contant product spread

* fix wrong terracli description

* Remove LunaPool from the keeper because it can be retrieved from CP/TerraPool, where CP = BasePool*BasePool

* Remove unnecessary internal swap when computing spread

* * fix market & treasury genesis export import feature
* clear all epoch dependent historical info when exporting for zero height

* add genesis test to market & treasury module

* append market query long description

* Set new parameter 'PoolRecoveryPeriod'. Blockly replenish Terra&Luna Pool by the amount of delta/PoolRecoveryPerio

* Fix oracle/denoms/actives example in swagger (#251)

* change base pool can be configured by param change proposal not by luna issuance systematically

* [Feature][oracle] Add whitelist and Update reward distribution mechanism (#250)

* removes oracle module account from blacklist of bank module; enable send to oracle module

*  * append new param whitelist to filter oracle active target denoms
* change RewardFraction to RewardDistributionPeriod which indicates (RewardPool * VotePeriod / RewardDistributionPeriod) will be distributed as a reward to the oracle ballot winners in every vote period

* fix tally to correctly collect ballot losers

* Update guide document for columbus-3 (#239)

* Update guide document for columbus-3

* Update market specification doc

* fix requested changes

* Feature/remove oracle slashing (#253)

* removes oracle module account from blacklist of bank module; enable send to oracle module

*  * append new param whitelist to filter oracle active target denoms
* change RewardFraction to RewardDistributionPeriod which indicates (RewardPool * VotePeriod / RewardDistributionPeriod) will be distributed as a reward to the oracle ballot winners in every vote period

* fix tally to correctly collect ballot losers

* remove oracle slashing feature

* fix oracle genesis export import feature & clear oracle prevote, vote, price when for-zero-height export

* append genesis test

* merge

* [Feature] Update cosmos-sdk to v0.37.2 (#240)

* update to cosmos-v0.37.1

* fix oracle genesis export import feature & clear oracle prevote, vote, price when for-zero-height export

* append genesis test

* update cosmos-sdk to v0.37.2

* Bump Tendermint version to v0.32.6 to address p2p panic errors.

* Bump SDK version to v0.37.3

* merge

* Feature/refactoring (#254)

* append overall testcode & oracle replenish bug fix

* update market module comments

* wip

* update oracle module comments and lcd

* update treasury module comments

* clear tax-rates and reward-weights when exporting for zero height

* updates for goreport (#255)

* fix all query response to be bonded with height (#261)

* register supply/ModuleAccount to auth ModuleCdc (#258)

* * Append a single end point to query all prevotes of a validator (#256)

* Append a single end point to query all votes of a validator
* Append a single end point to query all active luna prices

* fix oracle invalid prevote hash error msg to print byte length not string length (#259)

* remove oracle account address from send blacklist (#257)

* shortened default oracle voteperiod to 30 seconds. Need to reflect in genfile at col-3 release. (#264)

* Bump SDK version to v0.37.4 (#266)

* delete tools-stamp (#262)

* fix treasury comments (#267)

* change treasury keeper to store only indicators for the each epoch (#269)

* change treasury keeper to store only indicators for the epoch data

* records tax-proceeds only for the tax-rate not whole tx.Fee

* add keeper testcode

* change stored indicators from TRL,SR,MR to TR,SR,TSL

* swagger update

* [Feature] oracle refactor & add oracle slashing (#265)

* storing changes to tally, abvi, and keeper

* Revert "storing changes to tally, abvi, and keeper"

This reverts commit 70445a8.

* stylistic refactor done - not building

* Refactored oracle module. changing variable names

Price references changed to ExhangeRate

* Refactored rewards to be given out only for luna
removed claimpool, as it is no longer being used

* Implement oracle slashing

* update client code for miss count querying

* align comment & change DistributionPeriod to DistributionWindow & do swagger update

* jail the validator after oracle slashing

* * extract slashing from the keeper
* reduce tally cost by computing vote power at organizing
* split abstain vote for each denom

* fix merge err (#271)

* * change treasury init genesis to use current supply when epoch initial (#272)

issuance is empty
* update default params for oracle and market module

* chore(ci): remove git cache

related to job failure:
https://app.circleci.com/jobs/github/terra-project/core/3048

* fix oracle rest path (#274)

* bind height to rest query (#275)

* skip oracle slashing for not passed ballot

* [Bugfix] Add features to sync swagger doc (#283)

* add features to sync swagger doc

* ci test

* align oracle parameters to units of blocks (#279)

* [Bug] fix to apply reward spread by multiplication (#281)

* fix to apply reward spread by multiplication

* remove print

* align params stringify (#286)

* allow non-positive exchange-rate vote (#287)

* create new event manager per tx (#290)

* [Feature] oracle MsgDelegateFeedConsent.Deleagtee to Delegate (#288)

* oracle MsgDelegateFeedConsent.Deleagtee to Delegate

* increase oracle reward_band

* change log update for columbus-3 release (#268)

* prevent overflow by blocking huge input at handler & querier (#291)

* go-releaser udpate (#299)

* reward policy param update (#296)

* create oracle account at init genesis (#293)

* remove docs from the core repo (#298)

* fix oracle endpoint to accept voter variable (#295)

* [Feature] New market params for the high volatility TERRA (#300)

* add market parameter TobinTaxList to specify a more strict tobin tax for the denom with high volatility

* modify the param TobinTaxList to IlliquidTobinTaxList

* typo

* genesis update script for columbus-3 (wip) (#244)

* genesis update script

* modify min tax rate to 0.1%

* param update for increased slahsing penalties

* change address

* param update

* increase oracle slash_window to 1 month

* increase reward band & update tax-cap

* fix scriptg

* update genesis update script

* update max reward weight to 50%

* genesis script final update

* add illiquid_tobin_tax_list on market params

* change circle ci for auto gorelease execution (#306)

* build tx signatures as many as necessary for the msgs (#303)

* fix banner & changelog version (#301)

* swagger update (#305)

* [Bugfix] genesis script (#304)

* check if unbonding delegations exist

* genesis script change illiquid_tobin_tax_list from object to list

* recover vesting schedule changes

* decrease oracle slashing fraction to 0.01%
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature][oracle] Add whitelist and Update reward distribution mechanism
2 participants