@ -2,9 +2,6 @@ package client
import (
"github.com/harmony-one/harmony/core/types"
"github.com/simple-rules/harmony-benchmark/blockchain"
"sync"
"github.com/harmony-one/harmony/log"
"github.com/harmony-one/harmony/p2p"
"github.com/harmony-one/harmony/p2p/host"
@ -15,9 +12,7 @@ type Client struct {
Leaders * map [ uint32 ] p2p . Peer // Map of shard Id and corresponding leader
UpdateBlocks func ( [ ] * types . Block ) // Closure function used to sync new block with the leader. Once the leader finishes the consensus on a new block, it will send it to the clients. Clients use this method to update their blockchain
ShardUtxoMap map [ uint32 ] blockchain . UtxoMap
ShardUtxoMapMutex sync . Mutex // Mutex for the UTXO maps
log log . Logger // Log utility
log log . Logger // Log utility
// The p2p host used to send/receive p2p messages
host host . Host
@ -33,37 +28,6 @@ func NewClient(host host.Host, leaders *map[uint32]p2p.Peer) *Client {
return & client
}
// BuildOutputShardTransactionMap builds output shard transaction map.
func BuildOutputShardTransactionMap ( txs [ ] * blockchain . Transaction ) map [ uint32 ] [ ] * blockchain . Transaction {
txsShardMap := make ( map [ uint32 ] [ ] * blockchain . Transaction )
// Put txs into corresponding output shards
for _ , crossTx := range txs {
for curShardID := range GetOutputShardIDsOfCrossShardTx ( crossTx ) {
txsShardMap [ curShardID ] = append ( txsShardMap [ curShardID ] , crossTx )
}
}
return txsShardMap
}
// GetInputShardIDsOfCrossShardTx gets input shardID.
func GetInputShardIDsOfCrossShardTx ( crossTx * blockchain . Transaction ) map [ uint32 ] bool {
shardIDs := map [ uint32 ] bool { }
for _ , txInput := range crossTx . TxInput {
shardIDs [ txInput . ShardID ] = true
}
return shardIDs
}
// GetOutputShardIDsOfCrossShardTx gets output shard ids.
func GetOutputShardIDsOfCrossShardTx ( crossTx * blockchain . Transaction ) map [ uint32 ] bool {
shardIDs := map [ uint32 ] bool { }
for _ , txOutput := range crossTx . TxOutput {
shardIDs [ txOutput . ShardID ] = true
}
return shardIDs
}
// GetLeaders returns leader peers.
func ( client * Client ) GetLeaders ( ) [ ] p2p . Peer {
leaders := [ ] p2p . Peer { }