Block size

This commit is contained in:
obscuren 2014-08-25 12:53:06 +02:00
parent 3f904bf3ac
commit 6afc16399f
4 changed files with 35 additions and 2 deletions

View File

@ -351,7 +351,7 @@ func (block *Block) header() []interface{} {
func (block *Block) String() string { func (block *Block) String() string {
return fmt.Sprintf(` return fmt.Sprintf(`
BLOCK(%x): BLOCK(%x): Size: %v
PrevHash: %x PrevHash: %x
UncleSha: %x UncleSha: %x
Coinbase: %x Coinbase: %x
@ -368,6 +368,7 @@ func (block *Block) String() string {
NumTx: %v NumTx: %v
`, `,
block.Hash(), block.Hash(),
block.Size(),
block.PrevHash, block.PrevHash,
block.UncleSha, block.UncleSha,
block.Coinbase, block.Coinbase,
@ -384,3 +385,7 @@ func (block *Block) String() string {
len(block.transactions), len(block.transactions),
) )
} }
func (self *Block) Size() ethutil.StorageSize {
return ethutil.StorageSize(len(self.RlpEncode()))
}

View File

@ -14,6 +14,7 @@ import (
// Block interface exposed to QML // Block interface exposed to QML
type JSBlock struct { type JSBlock struct {
ref *ethchain.Block ref *ethchain.Block
Size string `json:"size"`
Number int `json:"number"` Number int `json:"number"`
Hash string `json:"hash"` Hash string `json:"hash"`
Transactions string `json:"transactions"` Transactions string `json:"transactions"`
@ -40,7 +41,7 @@ func NewJSBlock(block *ethchain.Block) *JSBlock {
return nil return nil
} }
return &JSBlock{ref: block, Number: int(block.Number.Uint64()), GasUsed: block.GasUsed.String(), GasLimit: block.GasLimit.String(), Hash: ethutil.Bytes2Hex(block.Hash()), Transactions: string(txJson), Time: block.Time, Coinbase: ethutil.Bytes2Hex(block.Coinbase)} return &JSBlock{ref: block, Size: block.Size().String(), Number: int(block.Number.Uint64()), GasUsed: block.GasUsed.String(), GasLimit: block.GasLimit.String(), Hash: ethutil.Bytes2Hex(block.Hash()), Transactions: string(txJson), Time: block.Time, Coinbase: ethutil.Bytes2Hex(block.Coinbase)}
} }
func (self *JSBlock) ToString() string { func (self *JSBlock) ToString() string {

15
ethutil/size.go Normal file
View File

@ -0,0 +1,15 @@
package ethutil
import "fmt"
type StorageSize float64
func (self StorageSize) String() string {
if self > 1000000 {
return fmt.Sprintf("%.2f mB", self/1000000)
} else if self > 1000 {
return fmt.Sprintf("%.2f kB", self/1000)
} else {
return fmt.Sprintf("%.2f B", self)
}
}

12
ethutil/size_test.go Normal file
View File

@ -0,0 +1,12 @@
package ethutil
import (
"fmt"
"testing"
)
func TestSize(t *testing.T) {
fmt.Println(StorageSize(2381273))
fmt.Println(StorageSize(2192))
fmt.Println(StorageSize(12))
}