From 109a24ff6a8a8bcf90988a2049234abcf4114565 Mon Sep 17 00:00:00 2001 From: Nattharat Wiriyakulnan Date: Thu, 16 Jul 2020 16:46:08 +0700 Subject: [PATCH 1/5] handle resolve all proposal status --- chain/emitter/app.go | 6 +++++- chain/emitter/bank.go | 9 +++++++++ chain/emitter/gov.go | 22 ++++++++++++++++++++++ chain/emitter/handler.go | 6 ++++++ flusher/flusher/db.py | 1 + flusher/flusher/handler.py | 15 +++++++++------ 6 files changed, 52 insertions(+), 7 deletions(-) diff --git a/chain/emitter/app.go b/chain/emitter/app.go index 905231d641..1bc2800f50 100644 --- a/chain/emitter/app.go +++ b/chain/emitter/app.go @@ -266,11 +266,15 @@ func (app *App) EndBlock(req abci.RequestEndBlock) abci.ResponseEndBlock { modifiedMsgs := []Message{app.msgs[0]} for accStr, _ := range app.accsInBlock { acc, _ := sdk.AccAddressFromBech32(accStr) + balance := "0uband" + if !app.BankKeeper.GetCoins(app.DeliverContext, acc).IsZero() { + balance = app.BankKeeper.GetCoins(app.DeliverContext, acc).String() + } modifiedMsgs = append(modifiedMsgs, Message{ Key: "SET_ACCOUNT", Value: JsDict{ "address": acc, - "balance": app.BankKeeper.GetCoins(app.DeliverContext, acc).String(), + "balance": balance, }}) } app.msgs = append(modifiedMsgs, app.msgs[1:]...) diff --git a/chain/emitter/bank.go b/chain/emitter/bank.go index 9fecc13161..476a546e7a 100644 --- a/chain/emitter/bank.go +++ b/chain/emitter/bank.go @@ -1,6 +1,7 @@ package emitter import ( + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank" ) @@ -19,3 +20,11 @@ func (app *App) handleMsgMultiSend( app.AddAccountsInTx(output.Address) } } + +func (app *App) handleEventTypeTransfer(evMap EvMap) { + address, err := sdk.AccAddressFromBech32(evMap[bank.EventTypeTransfer+"."+bank.AttributeKeyRecipient][0]) + if err != nil { + return + } + app.AddAccountsInBlock(address) +} diff --git a/chain/emitter/gov.go b/chain/emitter/gov.go index 0838805fc0..65984a6ebd 100644 --- a/chain/emitter/gov.go +++ b/chain/emitter/gov.go @@ -6,6 +6,12 @@ import ( "github.com/cosmos/cosmos-sdk/x/gov/types" ) +var ( + EventTypeInactiveProposal = types.EventTypeInactiveProposal + EventTypeActiveProposal = types.EventTypeActiveProposal + StatusInactive = 6 +) + func (app *App) emitSetDeposit(txHash []byte, id uint64, depositor sdk.AccAddress) { deposit, _ := app.GovKeeper.GetDeposit(app.DeliverContext, id, depositor) app.Write("SET_DEPOSIT", JsDict{ @@ -69,3 +75,19 @@ func (app *App) handleMsgVote( "tx_hash": txHash, }) } + +func (app *App) handleEventInactiveProposal(evMap EvMap) { + app.Write("UPDATE_PROPOSAL", JsDict{ + "id": atoi(evMap[types.EventTypeInactiveProposal+"."+types.AttributeKeyProposalID][0]), + "status": StatusInactive, + }) +} + +func (app *App) handleEventTypeActiveProposal(evMap EvMap) { + id := uint64(atoi(evMap[types.EventTypeActiveProposal+"."+types.AttributeKeyProposalID][0])) + proposal, _ := app.GovKeeper.GetProposal(app.DeliverContext, id) + app.Write("UPDATE_PROPOSAL", JsDict{ + "id": id, + "status": int(proposal.Status), + }) +} diff --git a/chain/emitter/handler.go b/chain/emitter/handler.go index 2a0e8b9c4c..1d2098f02e 100644 --- a/chain/emitter/handler.go +++ b/chain/emitter/handler.go @@ -90,6 +90,12 @@ func (app *App) handleBeginBlockEndBlockEvent(event abci.Event) { app.handleEventDeactivate(evMap) case EventTypeCompleteUnbonding: app.handleEventTypeCompleteUnbonding(evMap) + case EventTypeInactiveProposal: + app.handleEventInactiveProposal(evMap) + case EventTypeActiveProposal: + app.handleEventTypeActiveProposal(evMap) + case bank.EventTypeTransfer: + app.handleEventTypeTransfer(evMap) default: break } diff --git a/flusher/flusher/db.py b/flusher/flusher/db.py index 7a713a7b94..08bbdf2dc3 100644 --- a/flusher/flusher/db.py +++ b/flusher/flusher/db.py @@ -18,6 +18,7 @@ class ProposalStatus(enum.Enum): Passed = 3 Rejected = 4 Failed = 5 + Inactive = 6 class VoteOption(enum.Enum): diff --git a/flusher/flusher/handler.py b/flusher/flusher/handler.py index 52221351e5..809fadaf44 100644 --- a/flusher/flusher/handler.py +++ b/flusher/flusher/handler.py @@ -60,11 +60,14 @@ def handle_new_transaction(self, msg): ) def handle_set_account(self, msg): - self.conn.execute( - insert(accounts) - .values(**msg) - .on_conflict_do_update(index_elements=[accounts.c.address], set_=msg) - ) + id = self.get_account_id(msg["address"]) + if id is None: + self.conn.execute(accounts.insert(), msg) + else: + condition = True + for col in accounts.primary_key.columns.values(): + condition = (col == msg[col.name]) & condition + self.conn.execute(accounts.update().where(condition).values(**msg)) def handle_set_data_source(self, msg): if msg["tx_hash"] is not None: @@ -201,7 +204,7 @@ def handle_set_vote(self, msg): self.conn.execute( insert(votes).values(**msg).on_conflict_do_update(constraint="votes_pkey", set_=msg) ) - + def handle_update_proposal(self, msg): condition = True for col in proposals.primary_key.columns.values(): From af3ca55063625e2245360978bc357b5a53d245b7 Mon Sep 17 00:00:00 2001 From: Nattharat Wiriyakulnan Date: Thu, 16 Jul 2020 16:52:15 +0700 Subject: [PATCH 2/5] add change log --- CHANGELOG_UNRELEASED.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_UNRELEASED.md b/CHANGELOG_UNRELEASED.md index 08599b7011..48c36d25a2 100644 --- a/CHANGELOG_UNRELEASED.md +++ b/CHANGELOG_UNRELEASED.md @@ -20,6 +20,7 @@ ### Emitter & Flusher +- (feat) [\#2246](https://github.com/bandprotocol/bandchain/pull/2246) Implement handle all resolve proposal status. - (feat) [\#2242](https://github.com/bandprotocol/bandchain/pull/2242) Implement handle MsgVote for emitter and flusher. - (feat) [\#2241](https://github.com/bandprotocol/bandchain/pull/2241) Implement handle MsgDeposit for emitter and flusher. - (impv) [\#2240](https://github.com/bandprotocol/bandchain/pull/2240) Emit Kafka msg for staking genesis state. From d9c1da8287c3c930c4fec758f956676c11681077 Mon Sep 17 00:00:00 2001 From: Nattharat Wiriyakulnan Date: Fri, 17 Jul 2020 10:45:09 +0700 Subject: [PATCH 3/5] fix as comment --- chain/emitter/app.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/chain/emitter/app.go b/chain/emitter/app.go index 1bc2800f50..905231d641 100644 --- a/chain/emitter/app.go +++ b/chain/emitter/app.go @@ -266,15 +266,11 @@ func (app *App) EndBlock(req abci.RequestEndBlock) abci.ResponseEndBlock { modifiedMsgs := []Message{app.msgs[0]} for accStr, _ := range app.accsInBlock { acc, _ := sdk.AccAddressFromBech32(accStr) - balance := "0uband" - if !app.BankKeeper.GetCoins(app.DeliverContext, acc).IsZero() { - balance = app.BankKeeper.GetCoins(app.DeliverContext, acc).String() - } modifiedMsgs = append(modifiedMsgs, Message{ Key: "SET_ACCOUNT", Value: JsDict{ "address": acc, - "balance": balance, + "balance": app.BankKeeper.GetCoins(app.DeliverContext, acc).String(), }}) } app.msgs = append(modifiedMsgs, app.msgs[1:]...) From 31ef9e5e942c5a2fb5de6a9d2939a37365c73534 Mon Sep 17 00:00:00 2001 From: Nattharat Wiriyakulnan Date: Fri, 17 Jul 2020 11:04:28 +0700 Subject: [PATCH 4/5] add handleEventTypeMessage --- chain/emitter/bank.go | 12 ++++++++---- chain/emitter/handler.go | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/chain/emitter/bank.go b/chain/emitter/bank.go index 476a546e7a..82d860b3ea 100644 --- a/chain/emitter/bank.go +++ b/chain/emitter/bank.go @@ -22,9 +22,13 @@ func (app *App) handleMsgMultiSend( } func (app *App) handleEventTypeTransfer(evMap EvMap) { - address, err := sdk.AccAddressFromBech32(evMap[bank.EventTypeTransfer+"."+bank.AttributeKeyRecipient][0]) - if err != nil { - return + if recipient, err := sdk.AccAddressFromBech32(evMap[bank.EventTypeTransfer+"."+bank.AttributeKeyRecipient][0]); err == nil { + app.AddAccountsInBlock(recipient) + } +} + +func (app *App) handleEventTypeMessage(evMap EvMap) { + if sender, err := sdk.AccAddressFromBech32(evMap[sdk.EventTypeMessage+"."+bank.AttributeKeySender][0]); err == nil { + app.AddAccountsInBlock(sender) } - app.AddAccountsInBlock(address) } diff --git a/chain/emitter/handler.go b/chain/emitter/handler.go index 1d2098f02e..65a696e80e 100644 --- a/chain/emitter/handler.go +++ b/chain/emitter/handler.go @@ -96,6 +96,8 @@ func (app *App) handleBeginBlockEndBlockEvent(event abci.Event) { app.handleEventTypeActiveProposal(evMap) case bank.EventTypeTransfer: app.handleEventTypeTransfer(evMap) + case sdk.EventTypeMessage: + app.handleEventTypeMessage(evMap) default: break } From 388af1bced1277c60e57bbe7d2dde287060eea62 Mon Sep 17 00:00:00 2001 From: Nattharat Wiriyakulnan Date: Fri, 17 Jul 2020 11:20:06 +0700 Subject: [PATCH 5/5] remove handleEventTypeMessage --- chain/emitter/bank.go | 6 ------ chain/emitter/handler.go | 2 -- 2 files changed, 8 deletions(-) diff --git a/chain/emitter/bank.go b/chain/emitter/bank.go index 82d860b3ea..92084d0f25 100644 --- a/chain/emitter/bank.go +++ b/chain/emitter/bank.go @@ -26,9 +26,3 @@ func (app *App) handleEventTypeTransfer(evMap EvMap) { app.AddAccountsInBlock(recipient) } } - -func (app *App) handleEventTypeMessage(evMap EvMap) { - if sender, err := sdk.AccAddressFromBech32(evMap[sdk.EventTypeMessage+"."+bank.AttributeKeySender][0]); err == nil { - app.AddAccountsInBlock(sender) - } -} diff --git a/chain/emitter/handler.go b/chain/emitter/handler.go index 65a696e80e..1d2098f02e 100644 --- a/chain/emitter/handler.go +++ b/chain/emitter/handler.go @@ -96,8 +96,6 @@ func (app *App) handleBeginBlockEndBlockEvent(event abci.Event) { app.handleEventTypeActiveProposal(evMap) case bank.EventTypeTransfer: app.handleEventTypeTransfer(evMap) - case sdk.EventTypeMessage: - app.handleEventTypeMessage(evMap) default: break }