Skip to content

Commit

Permalink
Merge pull request #793 from klim0v/v3.2.x
Browse files Browse the repository at this point in the history
v3.3.0
  • Loading branch information
klim0v committed Apr 29, 2022
2 parents b6a87ce + 8eff737 commit 2a18c70
Show file tree
Hide file tree
Showing 5 changed files with 268 additions and 6 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog

## [v3.3.0](https://github.com/MinterTeam/minter-go-node/tree/v3.3.0)

[Full Changelog](https://github.com/MinterTeam/minter-go-node/compare/v3.2.0...v3.3.0)

### Fixed

- Accruals for DAOs and developers, taking into account blocked stakes

## [v3.2.0](https://github.com/MinterTeam/minter-go-node/tree/v3.2.0)

[Full Changelog](https://github.com/MinterTeam/minter-go-node/compare/v3.1.1...v3.2.0)
Expand Down
14 changes: 11 additions & 3 deletions coreV2/minter/blockchain.go
Expand Up @@ -147,6 +147,7 @@ func NewMinterBlockchain(storages *utils.Storage, cfg *config.Config, ctx contex
V3: {}, // tokenomics
V310: {}, // hotfix
V320: {},
V330: {},
},
executor: GetExecutor(V3),
}
Expand Down Expand Up @@ -179,6 +180,7 @@ const ( // known update versions
V3 = "v300" // tokenomics
V310 = "v310" // hotfix
V320 = "v320" // hotfix
V330 = "v330" // hotfix
)

func (blockchain *Blockchain) initState() {
Expand Down Expand Up @@ -452,12 +454,18 @@ func (blockchain *Blockchain) EndBlock(req abciTypes.RequestEndBlock) abciTypes.
var moreRewards = big.NewInt(0)
if height%blockchain.updateStakesAndPayRewardsPeriod == 0 {
PayRewards := blockchain.stateDeliver.Validators.PayRewardsV3
if h := blockchain.appDB.GetVersionHeight(V320); h > 0 && height > h {
PayRewards = blockchain.stateDeliver.Validators.PayRewardsV5
if h := blockchain.appDB.GetVersionHeight(V330); h > 0 && height > h {
if height < h+blockchain.updateStakesAndPayRewardsPeriod {
excess := blockchain.stateDeliver.Candidates.FixStakesAfter10509400()
blockchain.appDB.SetEmission(big.NewInt(0).Sub(blockchain.appDB.Emission(), excess))
log.Println("fixEmission", blockchain.appDB.Emission())
}
PayRewards = blockchain.stateDeliver.Validators.PayRewardsV5Fix
} else if h := blockchain.appDB.GetVersionHeight(V320); h > 0 && height > h {
PayRewards = blockchain.stateDeliver.Validators.PayRewardsV5Bug
} else if h := blockchain.appDB.GetVersionHeight(V310); h > 0 && height > h {
PayRewards = blockchain.stateDeliver.Validators.PayRewardsV4
}

moreRewards = PayRewards(heightIsMaxIfIssueIsOverOrNotDynamic, int64(blockchain.updateStakesAndPayRewardsPeriod))
blockchain.appDB.SetEmission(big.NewInt(0).Add(blockchain.appDB.Emission(), moreRewards))
blockchain.stateDeliver.Checker.AddCoinVolume(types.GetBaseCoinID(), moreRewards)
Expand Down
50 changes: 50 additions & 0 deletions coreV2/state/candidates/candidates.go
Expand Up @@ -4,6 +4,9 @@ import (
"bytes"
"encoding/binary"
"fmt"
"github.com/MinterTeam/minter-go-node/coreV2/dao"
"github.com/MinterTeam/minter-go-node/coreV2/developers"
"log"
"sync/atomic"

eventsdb "github.com/MinterTeam/minter-go-node/coreV2/events"
Expand Down Expand Up @@ -1508,3 +1511,50 @@ func (c *Candidates) loadDeletedCandidates() {
c.deletedCandidates[id.PybKey] = id
}
}

func (c *Candidates) FixStakesAfter10509400() *big.Int {
var correctStakes = map[string]map[string]string{"Mp000060164538dd9f298e3faddb0ce348fbded8349c90db3f0573325ba5a20099": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "33510969217991442153900", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "33408765612618024913051"}, "Mp0030667774229676f4641f9dc1d90ac47c3b8f1297fac16bed5950f863c20030": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "1397458333959849258126", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "1394137769636730129853"}, "Mp01cc99ae5a349ecaeef187dcbb12816bf2b3d8eae80f654034b21213aa445b2c": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "122236583817092774239266", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "121852818315430984601480"}, "Mp03478aae43a1a660573fab0763ae44492cdaf8deffc3fcbcc844acd67dfb2db6": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "36489144992929948883753", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "36366090138829703729864"}, "Mp03aae1d17c2e4ef6905adb44518be95aa0317cb7cbbe00236a36aab2e07c5b2c": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "11350715581955065344122", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "11315380800345116798827"}, "Mp120c15e48aed0ac866a1a918bd367cfa31909a6b09f328a18bd18f32edef2be8": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "59674171681036550468720", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "59478585952151012246159"}, "Mp1ada5ac409b965623bf6a4320260190038ae27230abfb5ebc9158280cdffffff": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "40715047444152333375286", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "40581105994884729017480"}, "Mp31d08d6f64f7a8a528ed2df77de2a02e4d8cefae93c771eb0b7de97322901215": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "17827247136406525739291", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "17773749366383914419151"}, "Mp3b6e2632cd0c91ef96ea4f4a16f554ff1b4dd41324fd421a0161947c50603b9b": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "44899967318280509746347", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "44760630408246579870429"}, "Mp3ff4490148c0cf42a9780dbb24a08e012d30d6f371021d28f8e4d3a8e2d6d9cf": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "3476934078882983241629", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "3465527934463811596493"}, "Mp46d3d6afe0084fcf530b03d1f4427e516a1cb4ec542640bcbc84c2c4b4f53c13": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "140947445307816038395793", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "140485616519116360309551"}, "Mp47f5c19c3ac5d66c960f36aa1a2d74ec8127f96308b67054332c988ee9eafaf0": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "53595138386224727399730", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "53428106357227266514222"}, "Mp4881ad167ca5fb5886322841f992d68aed894ffcb58abc080e8ad3b156f1045b": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "242478737788852874937553", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "241644884104251511311737"}, "Mp4881fc597a3921a690d3a9f95897ae42698992d6e9dfa57173209c6320a36ae8": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "8284619252877106502232", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "8258867378276467997585"}, "Mp5e3e1da62c7eabd9d8d168a36a92727fc1970a54ec61eadd285d4199c41191d7": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "14330419815717211490036", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "14284247551990214535705"}, "Mp629b5528f09d1c74a83d18414f2e4263e14850c47a3fac3f855f200111111111": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "410847584516443595057425", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "409438887362638749528200"}, "Mp65758496f8a5d626cac77f5a38894beae0050fdef862da201964cd2fd8111111": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "59240647446041884589682", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "59056162007039988072980"}, "Mp6ff5bd93c430e06e70ef9aff1eec8c617e03464bef2545180b9de1757fb578ac": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "1064278153008371196619", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "1060866143872181753974"}, "Mp7373d6d5a4ec18d87d766e5b4c6d3a0c94b357c4460a9ed377bf5d09fcd77373": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "8139977794481804031787", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "8115095298417052033113"}, "Mp7771ad434bd6df3519ee5bd5331e66815263a3d8afbdd6768003ff7f790db6bc": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "4786423506308566885", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "4784167411444000855"}, "Mp7779ec1c6492e7c71a36f4009d7ee5a43fed2fe4048882b8a099e748869f0777": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "10270355665428688472884", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "10236819291495837950276"}, "Mp77f71834108e9b5e65237a39263631b4f99a9d58437a1385c930c13ee1d4e2a6": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "21658501534219455755192", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "21584220501120727823524"}, "Mp7979c5a8d974e0c8c99f568b91454853f0c48fbbe68ac39d40efd0b330f30885": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "18956447281849717829149", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "18895438864841794085442"}, "Mp831167f2a292afb0f523ca451e181c6c1d2b75991a9f11ead019012841699739": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "210315706450222123970", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "209968785731925814855"}, "Mp83d44bdc43d39df6fba726cdfea81444fcd07b1e1cb9caf61835a4f31031fe9d": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "4703803980156876541275", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "4687857553613951468619"}, "Mp88883bcd4e9a4eeb7f5a7b7d1f4c02ac0fadc268824694fcccc84e39f4e08888": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "10154431165301281635317", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "10120666415083474476662"}, "Mp8fc37a738c22f75de69d057302c82a583294650d9aa25408cca6052d6d5272ee": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "2648999810684953089608", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "2639882872010359087603"}, "Mp95b76c6893dc28a34f005b9708bac59eae238232ef86798d672387bbb849bd22": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "6559073248119206936596", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "6538799947073029404432"}, "Mp97a5a64cbbf65a3474beb0a0cbf8eb054b14a59623f1416580099f4433333333": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "37505677161780553806034", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "37380118944053064240364"}, "Mp9fdd4c54b5a1ea0c014c8a8cf012cdb756630d0c35728c8659d6f69d2d00ffa5": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "2458651610276579346815", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "2451004079265544401877"}, "Mpa6a3137cd3a7a2442295911f0ccbfbfd050f34c17d7e3edc56f78464b880c649": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "12754869705378793678501", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "12712366362959729672751"}, "Mpaaaaa16ebd6af229b4cfc02c3ab40bd25c1051c3aa2120f07d08c1bd01777777": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "332575858670917958871169", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "331531644370337584703170"}, "Mpadeb65fa666a4a8e033d20c1a48d09b3f024eb8756da7f7a21e0932582222222": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "94145720673344281867639", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "93825349513615687726169"}, "Mpaf167d3b1d37733928b28615f4168e79de3d45529945a3630a10e0767e03b6e3": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "2221286644566503660875", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "2217641859368552681743"}, "Mpb451f898f2d5e054b9edc4b06c2cbcf1c318348593a05cae32565ec665758207": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "5724623743459580565593", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "5709967969656718374421"}, "Mpb5e24c1a451f26d6663b50f09bcf40c1e62f44d8bb81ad72d0252a81fe856ac4": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "4683711291880656684085", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "4669636350217621414848"}, "Mpb7a29db246fb2ce80c4f44549875d629d7fc0f02466f2b8a278510e742aa044e": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "14109872528042662790083", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "14064048777019753144531"}, "Mpc6df0dd44cae3cb49ee0ef8bd78750b961e64e231e6dfdc22fbd8e0c476d66d2": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "23875647121955165456115", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "23801800432186577215825"}, "Mpc9fc1052e075054cdbfb6443a6d14d97be9d4f19a10505c4323b52a78ca4bb18": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "28245183247759980423291", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "28157382419702975072432"}, "Mpd7a9eae76d3e98145b6b897c00c407b42ae8c42f937527ebdcd0239a4d88c0a5": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "25254200615429064426676", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "25171437563717707087830"}, "Mpe782c9a2c62f085f4d1bedf307de525b13226c20c597e66b0cf246a061f31b2d": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "11475971864115562515281", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "11441879881376464316452"}, "Mpeee9614b63a7ed6370ccd1fa227222fa30d6106770145c55bd4b482b88888888": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "79319104895478577411477", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "79072605151822268619155"}, "Mpf64c5956078cd8e5db5b3e7ccfc4e2f9b596fa3801eb3dbfef691623df972279": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "21005930049612665889858", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "20933576115781198383101"}, "Mpf979659e45f25defab5ef8624f8060e27b1440157f86779b12b98e7e293136cb": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "15396370097976565180343", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "15348446969626047200130"}, "Mpfe176f944623a8ca9f409a62f0ea3ca75c1cf8d89970adf9384fc9ae8d77fa0b": {"Mx688568d9d70c57e71d0b9de6480afb0d317f885c": "134569605678669021917879", "Mx7f0fc21d932f38ca9444f61703174569066cfa50": "134128024316356823282029"}}

moreStakes := big.NewInt(0)
candidates := c.getOrderedCandidatesLessID()
for _, candidate := range candidates {
moreCandidateStake := big.NewInt(0)
var gotDAO, gotDEV bool
for _, stake := range candidate.stakes {
if stake == nil {
continue
}
if stake.Owner == dao.Address {
value := helpers.StringToBigInt(correctStakes[candidate.PubKey.String()][stake.Owner.String()])

moreCandidateStake.Add(moreCandidateStake, big.NewInt(0).Sub(stake.Value, value))

stake.setValue(value)
stake.setBipValue(value)
log.Println("fixStake", candidate.PubKey.String(), stake.Owner.String(), value)

gotDAO = true
}
if stake.Owner == developers.Address {
value := helpers.StringToBigInt(correctStakes[candidate.PubKey.String()][stake.Owner.String()])

moreCandidateStake.Add(moreCandidateStake, big.NewInt(0).Sub(stake.Value, value))

stake.setValue(value)
stake.setBipValue(value)
log.Println("fixStake", candidate.PubKey.String(), stake.Owner.String(), value)

gotDEV = true
}
if gotDEV && gotDAO {
break
}
}
fixTotalStake := big.NewInt(0).Sub(candidate.totalBipStake, moreCandidateStake)
log.Println("fixTotalStake", candidate.PubKey.String(), fixTotalStake)
candidate.setTotalBipStake(fixTotalStake)
moreStakes.Add(moreStakes, moreCandidateStake)
}

return moreStakes
}

0 comments on commit 2a18c70

Please sign in to comment.