@@ -28,11 +28,18 @@ func (c Chain) Bitcoin() Bitcoin {
28
28
}
29
29
30
30
chain := Bitcoin {Id : c .Id , Confirmations : c .Confirmations }
31
+ if c .Network == NetworkMainnet {
32
+ chain .Params = & chaincfg .MainNetParams
33
+ } else if c .Network == NetworkTestnet {
34
+ chain .Params = & chaincfg .TestNet3Params
35
+ } else {
36
+ panic ("invalid network" )
37
+ }
31
38
32
- if err := figure .Out (& chain .Receivers ).FromInterface (c .BridgeAddresses ).With (bitcoinHooks ).Please (); err != nil {
39
+ if err := figure .Out (& chain .Receivers ).FromInterface (c .BridgeAddresses ).With (btcClientHook ).Please (); err != nil {
33
40
panic (errors .Wrap (err , "failed to decode bitcoin receivers" ))
34
41
}
35
- if err := figure .Out (& chain .Rpc ).FromInterface (c .Rpc ).With (bitcoinHooks ).Please (); err != nil {
42
+ if err := figure .Out (& chain .Rpc ).FromInterface (c .Rpc ).With (bitcoinAddrHook ( chain . Params ) ).Please (); err != nil {
36
43
panic (errors .Wrap (err , "failed to init bitcoin chain rpc" ))
37
44
}
38
45
@@ -42,30 +49,28 @@ func (c Chain) Bitcoin() Bitcoin {
42
49
panic (errors .Wrap (err , "failed to get wallet info" ))
43
50
}
44
51
45
- if c .Network == NetworkMainnet {
46
- chain .Params = & chaincfg .MainNetParams
47
- }
48
- if c .Network == NetworkTestnet {
49
- chain .Params = & chaincfg .TestNet3Params
50
- }
51
-
52
52
return chain
53
53
}
54
54
55
- var bitcoinHooks = figure.Hooks {
56
- "btcutil.Address" : func (value interface {}) (reflect.Value , error ) {
57
- switch v := value .(type ) {
58
- case string :
59
- addr , err := btcutil .DecodeAddress (v , & chaincfg .MainNetParams )
60
- if err != nil {
61
- return reflect.Value {}, errors .Wrap (err , "failed to decode address" )
55
+ func bitcoinAddrHook (params * chaincfg.Params ) figure.Hooks {
56
+ return figure.Hooks {
57
+ "btcutil.Address" : func (value interface {}) (reflect.Value , error ) {
58
+ switch v := value .(type ) {
59
+ case string :
60
+ addr , err := btcutil .DecodeAddress (v , params )
61
+ if err != nil {
62
+ return reflect.Value {}, errors .Wrap (err , "failed to decode address" )
63
+ }
64
+
65
+ return reflect .ValueOf (addr ), nil
66
+ default :
67
+ return reflect.Value {}, errors .Errorf ("unsupported conversion from %T" , value )
62
68
}
69
+ },
70
+ }
71
+ }
63
72
64
- return reflect .ValueOf (addr ), nil
65
- default :
66
- return reflect.Value {}, errors .Errorf ("unsupported conversion from %T" , value )
67
- }
68
- },
73
+ var btcClientHook = figure.Hooks {
69
74
"*rpcclient.Client" : func (value interface {}) (reflect.Value , error ) {
70
75
switch v := value .(type ) {
71
76
case map [string ]interface {}:
0 commit comments