Commit f1fb7079 authored by duanjinfei's avatar duanjinfei

add map

parent cd9a5318
......@@ -3,6 +3,7 @@ package transaction
import (
"ChainGrpcTest/log"
"ChainGrpcTest/tool"
"ChainGrpcTest/txcache"
"context"
v1 "github.com/CaduceusMetaverseProtocol/MetaProtocol/gen/proto/go/base/v1"
crypterv1 "github.com/CaduceusMetaverseProtocol/MetaProtocol/gen/proto/go/crypter/v1"
......@@ -233,10 +234,9 @@ func batchRecoverTx(client crypterv1.CrypterServiceClient, sleepTime int) {
sinceTime := time.Since(sendTranStartTime).Milliseconds()
atomic.AddInt64(&totalSendTime, sinceTime)
for _, tx := range sign.GetRecoverdTx() {
if set.contain(*tx.From) {
continue
if !txcache.CompareAddress(tx.TxHash.Hex(), tx.From.Hex()) {
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)
}
......@@ -269,12 +269,6 @@ func BatchRecoverTxHandler(tranArr []*types.Transaction, fromAddrArr []common.Ad
}
for {
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("Since time: %d ms", time.Since(startTime).Milliseconds())
break
......
......@@ -3,11 +3,13 @@ package transaction
import (
"ChainGrpcTest/log"
"ChainGrpcTest/tool"
"ChainGrpcTest/txcache"
"crypto/ecdsa"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"math/big"
"sync"
"time"
)
......@@ -48,6 +50,8 @@ func newTransactor(cfg TranConfig) (*Transactor, error) {
return &res, nil
}
var accountsNonceMap sync.Map
// SignedTxArr 获取全部签名数据
func SignedTxArr(sendTxAccountArr [][]string, cfg *tool.Config) ([]*types.Transaction, []common.Address) {
tranArr := make([]*types.Transaction, 0)
......@@ -68,6 +72,7 @@ func SignedTxArr(sendTxAccountArr [][]string, cfg *tool.Config) ([]*types.Transa
}
t, err := newTransactor(tranCfg)
signedTx, err = t.signedTx()
txcache.Add(signedTx.Hash().Hex(), rows[0])
nonce = big.NewInt(1).Add(nonce, big.NewInt(1))
if err != nil || signedTx == nil {
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