Skip to content

Commit

Permalink
ensure valid domain asset id generating
Browse files Browse the repository at this point in the history
  • Loading branch information
cedricfung committed Aug 27, 2022
1 parent 78d988b commit c49f530
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 81 deletions.
13 changes: 2 additions & 11 deletions domains/binance/validation.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package binance

import (
"crypto/md5"
"encoding/hex"
"errors"
"fmt"
"io"
"strings"

"github.com/MixinNetwork/mixin/crypto"
"github.com/MixinNetwork/mixin/domains/ethereum"
"github.com/btcsuite/btcd/btcutil/bech32"
"github.com/gofrs/uuid"
)

var (
Expand Down Expand Up @@ -77,14 +75,7 @@ func GenerateAssetId(assetKey string) crypto.Hash {
return BinanceChainId
}

h := md5.New()
io.WriteString(h, BinanceChainBase)
io.WriteString(h, assetKey)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
return ethereum.BuildChainAssetId(BinanceChainBase, assetKey)
}

type AccAddress []byte
Expand Down
13 changes: 2 additions & 11 deletions domains/eos/validation.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package eos

import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"regexp"
"strings"

"github.com/MixinNetwork/mixin/crypto"
"github.com/gofrs/uuid"
"github.com/MixinNetwork/mixin/domains/ethereum"
)

var (
Expand Down Expand Up @@ -97,12 +95,5 @@ func GenerateAssetId(assetKey string) crypto.Hash {
return EOSChainId
}

h := md5.New()
io.WriteString(h, EOSChainBase)
io.WriteString(h, assetKey)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
return ethereum.BuildChainAssetId(EOSChainBase, assetKey)
}
12 changes: 1 addition & 11 deletions domains/etc/validation.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package etc

import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"strings"

"github.com/MixinNetwork/mixin/crypto"
"github.com/MixinNetwork/mixin/domains/ethereum"
"github.com/gofrs/uuid"
)

var (
Expand Down Expand Up @@ -99,14 +96,7 @@ func GenerateAssetId(assetKey string) crypto.Hash {
return EthereumClassicChainId
}

h := md5.New()
io.WriteString(h, EthereumClassicChainBase)
io.WriteString(h, assetKey)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
return ethereum.BuildChainAssetId(EthereumClassicChainBase, assetKey)
}

func formatAddress(to string) (string, error) {
Expand Down
15 changes: 11 additions & 4 deletions domains/ethereum/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,21 @@ func GenerateAssetId(assetKey string) crypto.Hash {
return EthereumChainId
}

return BuildChainAssetId(EthereumChainBase, assetKey)
}

func BuildChainAssetId(base, asset string) crypto.Hash {
h := md5.New()
io.WriteString(h, EthereumChainBase)
io.WriteString(h, assetKey)
io.WriteString(h, base)
io.WriteString(h, asset)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
id, err := uuid.FromBytes(sum)
if err != nil {
panic(hex.EncodeToString(sum))
}
return crypto.NewHash([]byte(id.String()))
}

const (
Expand Down
13 changes: 2 additions & 11 deletions domains/polygon/validation.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package polygon

import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"strings"

"github.com/MixinNetwork/mixin/crypto"
"github.com/gofrs/uuid"
"github.com/MixinNetwork/mixin/domains/ethereum"
"golang.org/x/crypto/sha3"
)

Expand Down Expand Up @@ -99,14 +97,7 @@ func GenerateAssetId(assetKey string) crypto.Hash {
return PolygonChainId
}

h := md5.New()
io.WriteString(h, PolygonChainBase)
io.WriteString(h, assetKey)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
return ethereum.BuildChainAssetId(PolygonChainBase, assetKey)
}

const (
Expand Down
13 changes: 2 additions & 11 deletions domains/solana/validation.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package solana

import (
"crypto/md5"
"fmt"
"io"
"strings"

"github.com/MixinNetwork/mixin/crypto"
"github.com/MixinNetwork/mixin/domains/ethereum"
"github.com/btcsuite/btcd/btcutil/base58"
"github.com/gofrs/uuid"
)

var (
Expand Down Expand Up @@ -85,12 +83,5 @@ func GenerateAssetId(assetKey string) crypto.Hash {
panic(assetKey)
}

h := md5.New()
io.WriteString(h, SolanaChainBase)
io.WriteString(h, assetKey)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
return ethereum.BuildChainAssetId(SolanaChainBase, assetKey)
}
13 changes: 2 additions & 11 deletions domains/terra/validation.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package terra

import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"regexp"
"strings"

"github.com/MixinNetwork/mixin/crypto"
"github.com/MixinNetwork/mixin/domains/ethereum"
"github.com/btcsuite/btcd/btcutil/bech32"
"github.com/gofrs/uuid"
)

var (
Expand Down Expand Up @@ -88,14 +86,7 @@ func GenerateAssetId(assetKey string) crypto.Hash {
panic(assetKey)
}

h := md5.New()
io.WriteString(h, TerraChainBase)
io.WriteString(h, assetKey)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
return ethereum.BuildChainAssetId(TerraChainBase, assetKey)
}

func convertAndEncode(hrp string, data []byte) (string, error) {
Expand Down
13 changes: 2 additions & 11 deletions domains/tron/validation.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package tron

import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"strconv"
"strings"

"github.com/MixinNetwork/mixin/crypto"
"github.com/MixinNetwork/mixin/domains/ethereum"
"github.com/btcsuite/btcd/btcutil/base58"
"github.com/gofrs/uuid"
)

var (
Expand Down Expand Up @@ -93,14 +91,7 @@ func GenerateAssetId(assetKey string) crypto.Hash {
return TronChainId
}

h := md5.New()
io.WriteString(h, TronChainBase)
io.WriteString(h, assetKey)
sum := h.Sum(nil)
sum[6] = (sum[6] & 0x0f) | 0x30
sum[8] = (sum[8] & 0x3f) | 0x80
id := uuid.FromBytesOrNil(sum).String()
return crypto.NewHash([]byte(id))
return ethereum.BuildChainAssetId(TronChainBase, assetKey)
}

func formatAddress(to string) (string, error) {
Expand Down

0 comments on commit c49f530

Please sign in to comment.