From 771b74ac64ff7c1233c09a8ddae293984705b46c Mon Sep 17 00:00:00 2001
From: Miguel Montes <miguel.montes@gmail.com>
Date: Mon, 3 Dec 2018 17:52:18 -0300
Subject: [PATCH] =?UTF-8?q?Simplificaci=C3=B3n=20de=20algunas=20funciones?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 bfa_client/src/bfa/node.go          | 47 ++++++++++++-----------------
 bfa_client/src/client/bfa_client.go |  2 +-
 2 files changed, 20 insertions(+), 29 deletions(-)

diff --git a/bfa_client/src/bfa/node.go b/bfa_client/src/bfa/node.go
index 81c2580..6d11f47 100644
--- a/bfa_client/src/bfa/node.go
+++ b/bfa_client/src/bfa/node.go
@@ -253,24 +253,16 @@ func (node *Node) IsMining() (mining bool) {
 	return
 }
 
-func (node *Node) PeerCount() int64 {
-	var peerCount string
+func (node *Node) PeerCount() uint64 {
+	var peerCount Uint64
 	node.Call(&peerCount, "net_peerCount")
-	p, _ := strconv.ParseInt(peerCount, 0, 64)
-	return p
+	return uint64(peerCount)
 }
 
 func (node *Node) BalanceAtBlock(account string, blockNumber int64) *big.Int {
-	var (
-		balance string
-		block   = Latest
-	)
-	if blockNumber >= 0 {
-		block = Int64ToHex(blockNumber)
-	}
-	node.Call(&balance, "eth_getBalance", account, block)
-	n, _ := new(big.Int).SetString(balance, 0)
-	return n
+	var balance BigInt
+	node.Call(&balance, "eth_getBalance", account, hexBlockNumber(blockNumber))
+	return (*big.Int)(&balance)
 }
 
 func (node *Node) Balance(account string) *big.Int {
@@ -319,13 +311,11 @@ func (node *Node) BlockNumberInRange(number int64) (blockNumber int64) {
 }
 
 func (node *Node) HeaderByNumber(blockNumber int64) (header Header) {
-	Require(blockNumber == -1 || blockNumber == node.BlockNumberInRange(blockNumber), "block number out of range")
 	node.Call(&header, "eth_getBlockByNumber", hexBlockNumber(blockNumber), true)
 	return
 }
 
 func (node *Node) BlockByNumber(blockNumber int64) (block Block) {
-	Require(blockNumber == -1 || blockNumber == node.BlockNumberInRange(blockNumber), "block number out of range")
 	node.Call(&block, "eth_getBlockByNumber", hexBlockNumber(blockNumber), true)
 	block.setSigner()
 	return
@@ -346,17 +336,12 @@ func (node *Node) GetSnapshot() (snapshot Snapshot) {
 }
 
 func (node *Node) SnapshotAtBlock(blockNumber int64) (snapshot Snapshot) {
-	Require(blockNumber == -1 || blockNumber == node.BlockNumberInRange(blockNumber), "block number out of range")
 	node.Call(&snapshot, "clique_getSnapshot", hexBlockNumber(blockNumber))
 	return
 }
 
 func (node *Node) Sealers() (signers []string) {
-	var s []common.Address
-	node.Call(&s, "clique_getSigners", nil)
-	for _, signer := range s {
-		signers = append(signers, BytesToHex(signer.Bytes()))
-	}
+	node.Call(&signers, "clique_getSigners", nil)
 	return
 }
 
@@ -366,14 +351,10 @@ func (node *Node) NodeInfo() (nodeInfo p2p.NodeInfo) {
 }
 
 func (node *Node) SealersAtBlock(blockNumber int64) (signers []string) {
-	var s []common.Address
-	if blockNumber < 0 {
+	if blockNumber == -1 {
 		return node.Sealers()
 	}
-	node.Call(&s, "clique_getSigners", Int64ToHex(blockNumber))
-	for _, signer := range s {
-		signers = append(signers, BytesToHex(signer.Bytes()))
-	}
+	node.Call(&signers, "clique_getSigners", Int64ToHex(blockNumber))
 	return
 }
 
@@ -387,6 +368,16 @@ func (node *Node) IsSealer(address string) bool {
 	return Contains(node.Sealers(), address)
 }
 
+func (node *Node) IsSealerAtBlock(address string, blockNumber int64) bool {
+	if address == Self {
+		var err error
+		if address, err = node.Coinbase(); err != nil {
+			return false
+		}
+	}
+	return Contains(node.SealersAtBlock(blockNumber), address)
+}
+
 func (node *Node) Propose(address string, vote bool) {
 	node.Call(nil, "clique_propose", address, vote)
 	return
diff --git a/bfa_client/src/client/bfa_client.go b/bfa_client/src/client/bfa_client.go
index 926df25..68429b3 100644
--- a/bfa_client/src/client/bfa_client.go
+++ b/bfa_client/src/client/bfa_client.go
@@ -368,7 +368,7 @@ func status() {
 		IsSealer    bool                `json:"isSealer"`
 		IsMining    bool                `json:"isMining"`
 		BlockNumber int64               `json:"blockNumber"`
-		PeerCount   int64               `json:"peerCount"`
+		PeerCount   uint64              `json:"peerCount"`
 	}{
 		Accounts: make(map[string]*big.Int),
 	}
-- 
GitLab