Commit 41e28bc3 authored by vicotor's avatar vicotor

update code

parent 16675e84
...@@ -203,7 +203,7 @@ func (s *ChainSync) SyncLogs(beginHeight, endHeight int64) error { ...@@ -203,7 +203,7 @@ func (s *ChainSync) SyncLogs(beginHeight, endHeight int64) error {
topics := []string{ topics := []string{
dao.TransferOutEvent.ID.Hex(), dao.TransferOutEvent.ID.Hex(),
dao.TransferInEvent.ID.Hex(), dao.TransferInEvent.ID.Hex(),
//dao.TransferInConfirmationEvent.ID.Hex(), dao.TransferInConfirmationEvent.ID.Hex(),
dao.TransferInRejectionEvent.ID.Hex(), dao.TransferInRejectionEvent.ID.Hex(),
dao.TransferInExecutionEvent.ID.Hex(), dao.TransferInExecutionEvent.ID.Hex(),
dao.TokenConfigChangedEvent.ID.Hex(), dao.TokenConfigChangedEvent.ID.Hex(),
......
...@@ -159,7 +159,6 @@ func (s *Dao) filterTransferIn(chain ChainInterface, txLog types.Log, ctx contex ...@@ -159,7 +159,6 @@ func (s *Dao) filterTransferIn(chain ChainInterface, txLog types.Log, ctx contex
ToToken: strings.ToLower(event.Token.String()), ToToken: strings.ToLower(event.Token.String()),
ReceiveAmount: event.Amount.Text(10), ReceiveAmount: event.Amount.Text(10),
ToChainStatus: int(TransferChainWaitConfirm), ToChainStatus: int(TransferChainWaitConfirm),
ToContract: strings.ToLower(txLog.Address.String()), ToContract: strings.ToLower(txLog.Address.String()),
InTimestamp: int64(blocktime), InTimestamp: int64(blocktime),
ToChain: chain.GetChain().ChainId, ToChain: chain.GetChain().ChainId,
...@@ -186,12 +185,26 @@ func (s *Dao) filterTransferIn(chain ChainInterface, txLog types.Log, ctx contex ...@@ -186,12 +185,26 @@ func (s *Dao) filterTransferIn(chain ChainInterface, txLog types.Log, ctx contex
}).Error("db update transfer in execution event") }).Error("db update transfer in execution event")
return err return err
} }
case TransferInConfirmationEvent.ID.Hex():
event, err := chain.ParseTransferInConfirmation(txLog)
if err != nil {
log.WithField("chain", chain.Name()).WithError(err).Error("parse TransferInConfirmation log")
return err
}
if err := s.AddValidatorOp(ctx, chain.GetChain().ChainId, event.InId.Int64(), strings.ToLower(event.Validator.String()), true); err != nil {
log.WithField("chain", chain.Name()).WithError(err).Error("add validator op failed")
return err
}
case TransferInRejectionEvent.ID.Hex(): case TransferInRejectionEvent.ID.Hex():
event, err := chain.ParseTransferInRejection(txLog) event, err := chain.ParseTransferInRejection(txLog)
if err != nil { if err != nil {
log.WithField("chain", chain.Name()).WithError(err).Error("parse TransferInExecution log") log.WithField("chain", chain.Name()).WithError(err).Error("parse TransferInExecution log")
return err return err
} }
if err := s.AddValidatorOp(ctx, chain.GetChain().ChainId, event.InId.Int64(), strings.ToLower(event.Validator.String()), false); err != nil {
log.WithField("chain", chain.Name()).WithError(err).Error("add validator op failed")
return err
}
if err := s.UpdateBridgeResult(ctx, chain.GetChain().ChainId, event.InId.Int64(), TransferChainRejected, txLog.TxHash); err != nil { if err := s.UpdateBridgeResult(ctx, chain.GetChain().ChainId, event.InId.Int64(), TransferChainRejected, txLog.TxHash); err != nil {
log.WithField("chain", chain.Name()).WithFields(log.Fields{ log.WithField("chain", chain.Name()).WithFields(log.Fields{
"error": err.Error(), "error": err.Error(),
......
...@@ -165,7 +165,9 @@ func (d *Dao) GetHistoryInfo(user string) (history apiModel.History, err error) ...@@ -165,7 +165,9 @@ func (d *Dao) GetHistoryInfo(user string) (history apiModel.History, err error)
TokenSymbol: tokenInfo.Symbol, TokenSymbol: tokenInfo.Symbol,
UrlSource: fromChain.Explorer + "/tx/" + event.FromChainTxHash, UrlSource: fromChain.Explorer + "/tx/" + event.FromChainTxHash,
Status: constant.TransferStatus(event.ToChainStatus).String(), Status: constant.TransferStatus(event.ToChainStatus).String(),
ConfirmCount: len(event.ConfirmedValidators),
RejectCount: len(event.RejectedValidators),
} }
if event.ToChainStatus <= int(constant.TransferChainWaitConfirm) { if event.ToChainStatus <= int(constant.TransferChainWaitConfirm) {
pendingHistory = append(pendingHistory, record) pendingHistory = append(pendingHistory, record)
......
...@@ -115,6 +115,29 @@ func (d *Dao) FillOutTransferEventInfo(ctx context.Context, outEvent *dbModel.Br ...@@ -115,6 +115,29 @@ func (d *Dao) FillOutTransferEventInfo(ctx context.Context, outEvent *dbModel.Br
return err return err
} }
func (s *Dao) AddValidatorOp(ctx context.Context, toChainId int64, inId int64, validator string, isConfirmed bool) error {
collection := s.db.Collection("bridge_events")
var update bson.M
if isConfirmed {
update = bson.M{
"$addToSet": bson.M{
"confirmed_validators": validator,
},
}
} else {
update = bson.M{
"$addToSet": bson.M{
"rejected_validators": validator,
},
}
}
filter := bson.M{"to_chain": toChainId, "in_id": inId}
_, err := collection.UpdateOne(ctx, filter, update)
return err
}
func (d *Dao) UpdateBridgeResult(ctx context.Context, toChainId int64, inId int64, result constant.TransferStatus, txhash common.Hash) error { func (d *Dao) UpdateBridgeResult(ctx context.Context, toChainId int64, inId int64, result constant.TransferStatus, txhash common.Hash) error {
collection := d.db.Collection(new(dbModel.BridgeEvent).TableName()) collection := d.db.Collection(new(dbModel.BridgeEvent).TableName())
......
...@@ -20,16 +20,18 @@ type BridgeConfig struct { ...@@ -20,16 +20,18 @@ type BridgeConfig struct {
} }
type HistoryInfo struct { type HistoryInfo struct {
FromChain string `json:"from_chain" bson:"from_chain"` FromChain string `json:"from_chain" bson:"from_chain"`
ToChain string `json:"to_chain" bson:"to_chain"` ToChain string `json:"to_chain" bson:"to_chain"`
TxHash string `json:"tx_hash" bson:"tx_hash"` TxHash string `json:"tx_hash" bson:"tx_hash"`
UrlSource string `json:"url_source" bson:"url_source"` UrlSource string `json:"url_source" bson:"url_source"`
CreateTime int64 `json:"create_time" bson:"create_time"` CreateTime int64 `json:"create_time" bson:"create_time"`
Amount string `json:"amount" bson:"amount"` Amount string `json:"amount" bson:"amount"`
Token string `json:"token" bson:"token"` Token string `json:"token" bson:"token"`
TokenSymbol string `json:"token_symbol" bson:"token_symbol"` TokenSymbol string `json:"token_symbol" bson:"token_symbol"`
UrlTarget string `json:"url_target" bson:"url_target"` UrlTarget string `json:"url_target" bson:"url_target"`
Status string `json:"status" bson:"status"` Status string `json:"status" bson:"status"`
ConfirmCount int `json:"confirm_count" bson:"confirm_count"`
RejectCount int `json:"reject_count" bson:"reject_count"`
} }
type History struct { type History struct {
......
...@@ -15,24 +15,26 @@ func (h *Height) TableName() string { ...@@ -15,24 +15,26 @@ func (h *Height) TableName() string {
} }
type BridgeEvent struct { type BridgeEvent struct {
ID primitive.ObjectID `bson:"_id,omitempty"` ID primitive.ObjectID `bson:"_id,omitempty"`
FromChain int64 `bson:"from_chain"` FromChain int64 `bson:"from_chain"`
OutTimestamp int64 `bson:"out_timestamp"` OutTimestamp int64 `bson:"out_timestamp"`
FromToken string `bson:"from_token"` FromToken string `bson:"from_token"`
FromAddress string `bson:"from_address"` FromAddress string `bson:"from_address"`
FromChainTxHash string `bson:"from_chain_tx_hash"` FromChainTxHash string `bson:"from_chain_tx_hash"`
SendAmount string `bson:"send_amount"` SendAmount string `bson:"send_amount"`
FeeAmount string `bson:"fee_amount"` FeeAmount string `bson:"fee_amount"`
Receiver string `bson:"receiver"` Receiver string `bson:"receiver"`
ToChain int64 `bson:"to_chain"` ToChain int64 `bson:"to_chain"`
ToToken string `bson:"to_token"` ToToken string `bson:"to_token"`
ReceiveAmount string `bson:"receive_amount"` ReceiveAmount string `bson:"receive_amount"`
OutId int64 `bson:"out_id"` OutId int64 `bson:"out_id"`
InTimestamp int64 `bson:"in_timestamp"` InTimestamp int64 `bson:"in_timestamp"`
InId int64 `bson:"in_id"` InId int64 `bson:"in_id"`
ToContract string `bson:"to_contract"` ToContract string `bson:"to_contract"`
ToChainTxHash string `bson:"to_chain_tx_hash"` ToChainTxHash string `bson:"to_chain_tx_hash"`
ToChainStatus int `bson:"to_chain_status"` ToChainStatus int `bson:"to_chain_status"`
ConfirmedValidators []string `bson:"confirmed_validators"`
RejectedValidators []string `bson:"rejected_validators"`
} }
func (b *BridgeEvent) TableName() string { func (b *BridgeEvent) TableName() string {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment