aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-08-25 18:53:06 +0800
committerobscuren <geffobscura@gmail.com>2014-08-25 18:53:06 +0800
commit6afc16399f9624663579ad72950b4ea3b887db57 (patch)
tree34a2077e34ca34be1e9a51b61923ac40d7b76b5e
parent3f904bf3acb5779f68834ebca95825ea1990f85b (diff)
downloaddexon-6afc16399f9624663579ad72950b4ea3b887db57.tar.gz
dexon-6afc16399f9624663579ad72950b4ea3b887db57.tar.zst
dexon-6afc16399f9624663579ad72950b4ea3b887db57.zip
Block size
-rw-r--r--ethchain/block.go7
-rw-r--r--ethpipe/js_types.go3
-rw-r--r--ethutil/size.go15
-rw-r--r--ethutil/size_test.go12
4 files changed, 35 insertions, 2 deletions
diff --git a/ethchain/block.go b/ethchain/block.go
index 5765abd51..d2d012e55 100644
--- a/ethchain/block.go
+++ b/ethchain/block.go
@@ -351,7 +351,7 @@ func (block *Block) header() []interface{} {
func (block *Block) String() string {
return fmt.Sprintf(`
- BLOCK(%x):
+ BLOCK(%x): Size: %v
PrevHash: %x
UncleSha: %x
Coinbase: %x
@@ -368,6 +368,7 @@ func (block *Block) String() string {
NumTx: %v
`,
block.Hash(),
+ block.Size(),
block.PrevHash,
block.UncleSha,
block.Coinbase,
@@ -384,3 +385,7 @@ func (block *Block) String() string {
len(block.transactions),
)
}
+
+func (self *Block) Size() ethutil.StorageSize {
+ return ethutil.StorageSize(len(self.RlpEncode()))
+}
diff --git a/ethpipe/js_types.go b/ethpipe/js_types.go
index 0fb3a3876..d9cbef12d 100644
--- a/ethpipe/js_types.go
+++ b/ethpipe/js_types.go
@@ -14,6 +14,7 @@ import (
// Block interface exposed to QML
type JSBlock struct {
ref *ethchain.Block
+ Size string `json:"size"`
Number int `json:"number"`
Hash string `json:"hash"`
Transactions string `json:"transactions"`
@@ -40,7 +41,7 @@ func NewJSBlock(block *ethchain.Block) *JSBlock {
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 {
diff --git a/ethutil/size.go b/ethutil/size.go
new file mode 100644
index 000000000..b4426465e
--- /dev/null
+++ b/ethutil/size.go
@@ -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)
+ }
+}
diff --git a/ethutil/size_test.go b/ethutil/size_test.go
new file mode 100644
index 000000000..82aa1c653
--- /dev/null
+++ b/ethutil/size_test.go
@@ -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))
+}