diff --git a/utils/utils.go b/utils/utils.go new file mode 100644 index 0000000..2d53d1a --- /dev/null +++ b/utils/utils.go @@ -0,0 +1,42 @@ +package utils + +import ( + "encoding/binary" + + "github.com/maticnetwork/polyproto/heimdall" +) + +func ConvertH160toAddress(h160 *heimdall.H160) [20]byte { + var addr [20]byte + + binary.BigEndian.PutUint64(addr[0:], h160.Hi.Hi) + binary.BigEndian.PutUint64(addr[8:], h160.Hi.Lo) + binary.BigEndian.PutUint32(addr[16:], h160.Lo) + + return addr +} + +func ConvertAddressToH160(addr [20]byte) *heimdall.H160 { + return &heimdall.H160{ + Lo: binary.BigEndian.Uint32(addr[16:]), + Hi: &heimdall.H128{Lo: binary.BigEndian.Uint64(addr[8:]), Hi: binary.BigEndian.Uint64(addr[0:])}, + } +} + +func ConvertH256ToHash(h256 *heimdall.H256) [32]byte { + var hash [32]byte + + binary.BigEndian.PutUint64(hash[0:], h256.Hi.Hi) + binary.BigEndian.PutUint64(hash[8:], h256.Hi.Lo) + binary.BigEndian.PutUint64(hash[16:], h256.Lo.Hi) + binary.BigEndian.PutUint64(hash[24:], h256.Lo.Lo) + + return hash +} + +func ConvertHashToH256(hash [32]byte) *heimdall.H256 { + return &heimdall.H256{ + Lo: &heimdall.H128{Lo: binary.BigEndian.Uint64(hash[24:]), Hi: binary.BigEndian.Uint64(hash[16:])}, + Hi: &heimdall.H128{Lo: binary.BigEndian.Uint64(hash[8:]), Hi: binary.BigEndian.Uint64(hash[0:])}, + } +}