aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-17 01:42:18 +0800
committerobscuren <geffobscura@gmail.com>2015-03-17 01:42:18 +0800
commit91b0b14845750c81466880f5f877fe3fcbd03b09 (patch)
treef765fe3f66891a566e836ea748747ddab31bca85 /common
parentbfcd2cf132c2f1e5c1afe6d71e3d9d9dcee5017b (diff)
downloaddexon-91b0b14845750c81466880f5f877fe3fcbd03b09.tar.gz
dexon-91b0b14845750c81466880f5f877fe3fcbd03b09.tar.zst
dexon-91b0b14845750c81466880f5f877fe3fcbd03b09.zip
converted vm
Diffstat (limited to 'common')
-rw-r--r--common/types.go45
1 files changed, 27 insertions, 18 deletions
diff --git a/common/types.go b/common/types.go
index 3dc4500b3..267077f4f 100644
--- a/common/types.go
+++ b/common/types.go
@@ -1,8 +1,16 @@
package common
-import "fmt"
+import "math/big"
-type Hash [32]byte
+const (
+ hashLength = 32
+ addressLength = 20
+)
+
+type (
+ Hash [hashLength]byte
+ Address [addressLength]byte
+)
var (
zeroHash Hash
@@ -15,25 +23,19 @@ func BytesToHash(b []byte) Hash {
return h
}
func StringToHash(s string) Hash { return BytesToHash([]byte(s)) }
-
-func BytesToAddress(b []byte) Address {
- var a Address
- a.SetBytes(b)
- return a
-}
-func StringToAddress(s string) Address { return BytesToAddress([]byte(s)) }
+func BigToHash(b *big.Int) Hash { return BytesToHash(b.Bytes()) }
// Don't use the default 'String' method in case we want to overwrite
// Get the string representation of the underlying hash
-func (h Hash) Str() string {
- return string(h[:])
-}
+func (h Hash) Str() string { return string(h[:]) }
+func (h Hash) Bytes() []byte { return h[:] }
+func (h Hash) Big() *big.Int { return Bytes2Big(h[:]) }
// Sets the hash to the value of b. If b is larger than len(h) it will panic
func (h *Hash) SetBytes(b []byte) {
if len(b) > len(h) {
- panic(fmt.Sprintf("unable to set bytes. too big = %d", len(b)))
+ b = b[len(b)-hashLength:]
}
// reverse loop
@@ -52,17 +54,24 @@ func (h *Hash) Set(other Hash) {
}
}
-type Address [20]byte
+/////////// Address
+func BytesToAddress(b []byte) Address {
+ var a Address
+ a.SetBytes(b)
+ return a
+}
+func StringToAddress(s string) Address { return BytesToAddress([]byte(s)) }
+func BigToAddress(b *big.Int) Address { return BytesToAddress(b.Bytes()) }
// Get the string representation of the underlying address
-func (a Address) Str() string {
- return string(a[:])
-}
+func (a Address) Str() string { return string(a[:]) }
+func (a Address) Bytes() []byte { return a[:] }
+func (a Address) Big() *big.Int { return Bytes2Big(a[:]) }
// Sets the address to the value of b. If b is larger than len(a) it will panic
func (a *Address) SetBytes(b []byte) {
if len(b) > len(a) {
- panic(fmt.Sprintf("unable to set bytes. too big = %d", len(b)))
+ b = b[len(b)-addressLength:]
}
// reverse loop