Commit f1fb7079 authored by duanjinfei's avatar duanjinfei

add map

parent cd9a5318
...@@ -3,6 +3,7 @@ package transaction ...@@ -3,6 +3,7 @@ package transaction
import ( import (
"ChainGrpcTest/log" "ChainGrpcTest/log"
"ChainGrpcTest/tool" "ChainGrpcTest/tool"
"ChainGrpcTest/txcache"
"context" "context"
v1 "github.com/CaduceusMetaverseProtocol/MetaProtocol/gen/proto/go/base/v1" v1 "github.com/CaduceusMetaverseProtocol/MetaProtocol/gen/proto/go/base/v1"
crypterv1 "github.com/CaduceusMetaverseProtocol/MetaProtocol/gen/proto/go/crypter/v1" crypterv1 "github.com/CaduceusMetaverseProtocol/MetaProtocol/gen/proto/go/crypter/v1"
...@@ -233,10 +234,9 @@ func batchRecoverTx(client crypterv1.CrypterServiceClient, sleepTime int) { ...@@ -233,10 +234,9 @@ func batchRecoverTx(client crypterv1.CrypterServiceClient, sleepTime int) {
sinceTime := time.Since(sendTranStartTime).Milliseconds() sinceTime := time.Since(sendTranStartTime).Milliseconds()
atomic.AddInt64(&totalSendTime, sinceTime) atomic.AddInt64(&totalSendTime, sinceTime)
for _, tx := range sign.GetRecoverdTx() { for _, tx := range sign.GetRecoverdTx() {
if set.contain(*tx.From) { if !txcache.CompareAddress(tx.TxHash.Hex(), tx.From.Hex()) {
continue log.Error("tx.TxHash:", tx.TxHash.Hex(), "tx.From", tx.From.Hex())
} }
set.txArr = append(set.txArr, tx)
} }
log.Infof("Send transaction time: %d ms", sinceTime) log.Infof("Send transaction time: %d ms", sinceTime)
} }
...@@ -269,12 +269,6 @@ func BatchRecoverTxHandler(tranArr []*types.Transaction, fromAddrArr []common.Ad ...@@ -269,12 +269,6 @@ func BatchRecoverTxHandler(tranArr []*types.Transaction, fromAddrArr []common.Ad
} }
for { for {
if bathHandleSendCount == allSignedTxCount { if bathHandleSendCount == allSignedTxCount {
for _, fromAddr := range fromAddrArr {
address := metatypes.HexToAddress(fromAddr.Hex())
if !set.contain(address) {
log.Error("not contain from addr:", address)
}
}
log.Infof("Send tran count: %d", bathHandleSendCount) log.Infof("Send tran count: %d", bathHandleSendCount)
log.Infof("Since time: %d ms", time.Since(startTime).Milliseconds()) log.Infof("Since time: %d ms", time.Since(startTime).Milliseconds())
break break
......
...@@ -3,11 +3,13 @@ package transaction ...@@ -3,11 +3,13 @@ package transaction
import ( import (
"ChainGrpcTest/log" "ChainGrpcTest/log"
"ChainGrpcTest/tool" "ChainGrpcTest/tool"
"ChainGrpcTest/txcache"
"crypto/ecdsa" "crypto/ecdsa"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
"math/big" "math/big"
"sync"
"time" "time"
) )
...@@ -48,6 +50,8 @@ func newTransactor(cfg TranConfig) (*Transactor, error) { ...@@ -48,6 +50,8 @@ func newTransactor(cfg TranConfig) (*Transactor, error) {
return &res, nil return &res, nil
} }
var accountsNonceMap sync.Map
// SignedTxArr 获取全部签名数据 // SignedTxArr 获取全部签名数据
func SignedTxArr(sendTxAccountArr [][]string, cfg *tool.Config) ([]*types.Transaction, []common.Address) { func SignedTxArr(sendTxAccountArr [][]string, cfg *tool.Config) ([]*types.Transaction, []common.Address) {
tranArr := make([]*types.Transaction, 0) tranArr := make([]*types.Transaction, 0)
...@@ -68,6 +72,7 @@ func SignedTxArr(sendTxAccountArr [][]string, cfg *tool.Config) ([]*types.Transa ...@@ -68,6 +72,7 @@ func SignedTxArr(sendTxAccountArr [][]string, cfg *tool.Config) ([]*types.Transa
} }
t, err := newTransactor(tranCfg) t, err := newTransactor(tranCfg)
signedTx, err = t.signedTx() signedTx, err = t.signedTx()
txcache.Add(signedTx.Hash().Hex(), rows[0])
nonce = big.NewInt(1).Add(nonce, big.NewInt(1)) nonce = big.NewInt(1).Add(nonce, big.NewInt(1))
if err != nil || signedTx == nil { if err != nil || signedTx == nil {
log.Errorf("signed tx error %s ", err) log.Errorf("signed tx error %s ", err)
......
package txcache
import (
"strings"
"sync"
)
var (
gtxcache = &TxCache{
cache: make(map[string]string),
}
)
type TxCache struct {
cache map[string]string
mux sync.RWMutex
}
func Add(txhash string, address string) {
gtxcache.mux.Lock()
defer gtxcache.mux.Unlock()
gtxcache.cache[txhash] = address
}
func CompareAddress(txhash string, newer string) bool {
gtxcache.mux.RLock()
defer gtxcache.mux.RUnlock()
o, exist := gtxcache.cache[txhash]
if !exist {
return false
}
return strings.Compare(newer, o) == 0
}
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