Skip to content

Commit

Permalink
fix: net params for dogecoin/digibyte
Browse files Browse the repository at this point in the history
  • Loading branch information
jazg committed Jun 17, 2021
1 parent 01096f5 commit f4bcb92
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 11 deletions.
34 changes: 27 additions & 7 deletions watcher/watcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ import (
"github.com/renproject/multichain"
"github.com/renproject/multichain/chain/bitcoin"
"github.com/renproject/multichain/chain/bitcoincash"
"github.com/renproject/multichain/chain/digibyte"
"github.com/renproject/multichain/chain/dogecoin"
"github.com/renproject/multichain/chain/filecoin"
"github.com/renproject/multichain/chain/solana"
"github.com/renproject/multichain/chain/terra"
Expand Down Expand Up @@ -519,10 +521,10 @@ func (watcher Watcher) handleAssetAddrSolana(toBytes []byte) (tx.Version, multic
func AddressEncodeDecoder(chain multichain.Chain, network multichain.Network) multichain.AddressEncodeDecoder {
switch chain {
case multichain.Bitcoin, multichain.DigiByte, multichain.Dogecoin:
params := NetParams(network, chain)
params := NetParams(chain, network)
return bitcoin.NewAddressEncodeDecoder(params)
case multichain.BitcoinCash:
params := NetParams(network, chain)
params := NetParams(chain, network)
return bitcoincash.NewAddressEncodeDecoder(params)
case multichain.Filecoin:
return filecoin.NewAddressEncodeDecoder()
Expand All @@ -547,17 +549,35 @@ func ZcashNetParams(network multichain.Network) *zcash.Params {
}
}

func NetParams(network multichain.Network, chain multichain.Chain) *chaincfg.Params {
func NetParams(chain multichain.Chain, net multichain.Network) *chaincfg.Params {
switch chain {
case multichain.Bitcoin, multichain.BitcoinCash, multichain.DigiByte, multichain.Dogecoin:
switch network {
case multichain.NetworkMainnet:
return &chaincfg.MainNetParams
case multichain.Bitcoin, multichain.BitcoinCash:
switch net {
case multichain.NetworkDevnet, multichain.NetworkTestnet:
return &chaincfg.TestNet3Params
case multichain.NetworkMainnet:
return &chaincfg.MainNetParams
default:
return &chaincfg.RegressionNetParams
}
case multichain.DigiByte:
switch net {
case multichain.NetworkDevnet, multichain.NetworkTestnet:
return &digibyte.TestnetParams
case multichain.NetworkMainnet:
return &digibyte.MainNetParams
default:
return &digibyte.RegressionNetParams
}
case multichain.Dogecoin:
switch net {
case multichain.NetworkDevnet, multichain.NetworkTestnet:
return &dogecoin.TestNetParams
case multichain.NetworkMainnet:
return &dogecoin.MainNetParams
default:
return &dogecoin.RegressionNetParams
}
default:
panic(fmt.Errorf("cannot get network params: unknown chain %v", chain))
}
Expand Down
9 changes: 5 additions & 4 deletions watcher/watcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -645,20 +645,21 @@ var _ = Describe("Watcher", func() {
validTestnetAddrs := []multichain.Address{
"miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6",
"bchtest:qq0j3wgesd5de3tuhkka25yjh2xselqvmvpxvx7863",
"t28Tc2BUTHifXthexsohy89umGdqMWLSUqw",
"t5d726GyG6Ejzu4nansAxgLY4VR5bMwDFD",
"nXYwuk6dEF3Sm3jPgWjxz8brY6ArSzjvqz",
"t14wczuvodunv3xzexobzywpbj6qpr6jwdrbkrmbq",
"terra1ru5tjxvrdrwv2l9a4h24py4635x0crxmehw5hh",
"t28Tc2BUTHifXthexsohy89umGdqMWLSUqw",
}
chains := []multichain.Chain{multichain.Bitcoin, multichain.BitcoinCash, multichain.Zcash, multichain.Dogecoin, multichain.Filecoin, multichain.Terra}
networks := []multichain.Network{multichain.NetworkDevnet, multichain.NetworkMainnet, multichain.NetworkLocalnet}
chains := []multichain.Chain{multichain.Bitcoin, multichain.BitcoinCash, multichain.DigiByte, multichain.Dogecoin, multichain.Filecoin, multichain.Terra, multichain.Zcash}
networks := []multichain.Network{multichain.NetworkTestnet, multichain.NetworkMainnet}
for i := range chains {
for j := range networks {
decoder := AddressEncodeDecoder(chains[i], networks[j])
_, err := decoder.DecodeAddress(validTestnetAddrs[i])
// If network is mainnet, fail to decode addresses
// otherwise pass
if j == 1 {
if networks[j] == multichain.NetworkMainnet && chains[i].IsUTXOBased() {
Expect(err).To(HaveOccurred())
} else {
if i == 1 && j == 2 {
Expand Down

0 comments on commit f4bcb92

Please sign in to comment.