@@ -18,37 +18,35 @@ import (
18
18
"testing/quick"
19
19
"time"
20
20
21
- "github.com/btcsuite/btcutil/hdkeychain"
22
- "github.com/ethereum/go-ethereum/accounts/keystore"
23
- "github.com/ethereum/go-ethereum/crypto"
24
- "github.com/renproject/multichain/chain/avalanche"
25
- "github.com/renproject/multichain/chain/bsc"
26
- "github.com/renproject/multichain/chain/ethereum"
27
- "github.com/renproject/multichain/chain/fantom"
28
- "github.com/renproject/multichain/chain/polygon"
29
- "github.com/tyler-smith/go-bip39"
30
-
31
21
"github.com/btcsuite/btcd/btcec"
32
22
"github.com/btcsuite/btcd/chaincfg"
33
23
"github.com/btcsuite/btcd/txscript"
34
24
"github.com/btcsuite/btcutil"
35
25
"github.com/btcsuite/btcutil/base58"
26
+ "github.com/btcsuite/btcutil/hdkeychain"
27
+ "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
36
28
cosmossdk "github.com/cosmos/cosmos-sdk/types"
29
+ "github.com/ethereum/go-ethereum/accounts/keystore"
30
+ "github.com/ethereum/go-ethereum/crypto"
37
31
filaddress "github.com/filecoin-project/go-address"
38
32
filtypes "github.com/filecoin-project/lotus/chain/types"
39
33
"github.com/renproject/id"
40
34
"github.com/renproject/multichain"
35
+ "github.com/renproject/multichain/api/account"
36
+ "github.com/renproject/multichain/chain/avalanche"
41
37
"github.com/renproject/multichain/chain/bitcoin"
42
38
"github.com/renproject/multichain/chain/bitcoincash"
43
-
44
- "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
45
- // "github.com/renproject/multichain/chain/digibyte"
39
+ "github.com/renproject/multichain/chain/bsc"
46
40
"github.com/renproject/multichain/chain/dogecoin"
41
+ "github.com/renproject/multichain/chain/ethereum"
42
+ "github.com/renproject/multichain/chain/fantom"
47
43
"github.com/renproject/multichain/chain/filecoin"
44
+ "github.com/renproject/multichain/chain/polygon"
48
45
"github.com/renproject/multichain/chain/terra"
49
46
"github.com/renproject/multichain/chain/zcash"
50
47
"github.com/renproject/pack"
51
48
"github.com/renproject/surge"
49
+ "github.com/tyler-smith/go-bip39"
52
50
"go.uber.org/zap"
53
51
"go.uber.org/zap/zapcore"
54
52
@@ -541,7 +539,7 @@ var _ = Describe("Multichain", func() {
541
539
privKeyToAddr func (pk id.PrivKey ) multichain.Address
542
540
rpcURL pack.String
543
541
randomRecipientAddr func () multichain.Address
544
- initialise func (pack.String , [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder )
542
+ initialise func (pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder )
545
543
txParams func (multichain.AccountClient ) (pack.U256 , pack.U256 , pack.U256 , pack.U256 , pack.Bytes )
546
544
chain multichain.Chain
547
545
}{
@@ -582,7 +580,7 @@ var _ = Describe("Multichain", func() {
582
580
recipientKey := id .NewPrivKey ()
583
581
return multichain .Address (crypto .PubkeyToAddress (recipientKey .PublicKey ).Hex ())
584
582
},
585
- func (rpcURL pack.String , _ [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
583
+ func (rpcURL pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
586
584
client , err := ethereum .NewClient (string (rpcURL ))
587
585
Expect (err ).NotTo (HaveOccurred ())
588
586
txBuilder := ethereum .NewTxBuilder (big .NewInt (1337 ))
@@ -620,7 +618,7 @@ var _ = Describe("Multichain", func() {
620
618
recipientKey := id .NewPrivKey ()
621
619
return multichain .Address (crypto .PubkeyToAddress (recipientKey .PublicKey ).Hex ())
622
620
},
623
- func (rpcURL pack.String , _ [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
621
+ func (rpcURL pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
624
622
client , err := polygon .NewClient (string (rpcURL ))
625
623
Expect (err ).NotTo (HaveOccurred ())
626
624
txBuilder := polygon .NewTxBuilder (big .NewInt (15001 ))
@@ -674,7 +672,7 @@ var _ = Describe("Multichain", func() {
674
672
recipientKey := id .NewPrivKey ()
675
673
return multichain .Address (crypto .PubkeyToAddress (recipientKey .PublicKey ).Hex ())
676
674
},
677
- func (rpcURL pack.String , _ [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
675
+ func (rpcURL pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
678
676
client , err := bsc .NewClient (string (rpcURL ))
679
677
Expect (err ).NotTo (HaveOccurred ())
680
678
txBuilder := bsc .NewTxBuilder (big .NewInt (420 ))
@@ -712,7 +710,7 @@ var _ = Describe("Multichain", func() {
712
710
recipientKey := id .NewPrivKey ()
713
711
return multichain .Address (crypto .PubkeyToAddress (recipientKey .PublicKey ).Hex ())
714
712
},
715
- func (rpcURL pack.String , _ [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
713
+ func (rpcURL pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
716
714
client , err := avalanche .NewClient (string (rpcURL ))
717
715
Expect (err ).NotTo (HaveOccurred ())
718
716
txBuilder := avalanche .NewTxBuilder (big .NewInt (43112 ))
@@ -748,7 +746,7 @@ var _ = Describe("Multichain", func() {
748
746
recipientKey := id .NewPrivKey ()
749
747
return multichain .Address (crypto .PubkeyToAddress (recipientKey .PublicKey ).Hex ())
750
748
},
751
- func (rpcURL pack.String , _ [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
749
+ func (rpcURL pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
752
750
client , err := fantom .NewClient (string (rpcURL ))
753
751
Expect (err ).NotTo (HaveOccurred ())
754
752
txBuilder := fantom .NewTxBuilder (big .NewInt (4003 ))
@@ -797,7 +795,7 @@ var _ = Describe("Multichain", func() {
797
795
recipient := multichain .Address (cosmossdk .AccAddress (recipientKey .PubKey ().Address ()).String ())
798
796
return recipient
799
797
},
800
- initialise : func (rpcURL pack.String , key [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
798
+ initialise : func (rpcURL pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
801
799
client := terra .NewClient (
802
800
terra .DefaultClientOptions ().
803
801
WithHost (rpcURL ).
@@ -806,7 +804,7 @@ var _ = Describe("Multichain", func() {
806
804
txBuilder := terra .NewTxBuilder (
807
805
terra .DefaultTxBuilderOptions ().
808
806
WithChainID ("testnet" ),
809
- client , key ,
807
+ client ,
810
808
)
811
809
812
810
return client , txBuilder
@@ -867,7 +865,7 @@ var _ = Describe("Multichain", func() {
867
865
Expect (err ).NotTo (HaveOccurred ())
868
866
return multichain .Address (pack .String (addr .String ()))
869
867
},
870
- func (rpcURL pack.String , _ [] byte ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
868
+ func (rpcURL pack.String ) (multichain.AccountClient , multichain.AccountTxBuilder ) {
871
869
// dirty hack to fetch auth token
872
870
client , err := filecoin .NewClient (
873
871
filecoin .DefaultClientOptions ().
@@ -915,8 +913,8 @@ var _ = Describe("Multichain", func() {
915
913
916
914
// Initialise the account chain's client, and possibly get a nonce for
917
915
// the sender.
918
- accountClient , txBuilder := accountChain .initialise (accountChain .rpcURL , pack . NewBytes ( senderPubKeyBytes ) )
919
- sendTx := func () (pack.Bytes , pack. U256 ) {
916
+ accountClient , txBuilder := accountChain .initialise (accountChain .rpcURL )
917
+ sendTx := func () (pack.Bytes , account. Tx ) {
920
918
// Get the appropriate nonce for sender.
921
919
nonce , err := accountClient .AccountNonce (ctx , senderAddr )
922
920
Expect (err ).NotTo (HaveOccurred ())
@@ -931,6 +929,17 @@ var _ = Describe("Multichain", func() {
931
929
amount , nonce , gasLimit , gasPrice , gasCap ,
932
930
payload ,
933
931
)
932
+ // TODO: Temporarily use the public key in place of the
933
+ // from address for Terra.
934
+ if accountChain .chain == multichain .Terra {
935
+ accountTx , err = txBuilder .BuildTx (
936
+ ctx ,
937
+ multichain .Address (hex .EncodeToString (senderPubKeyBytes )),
938
+ recipientAddr ,
939
+ amount , nonce , gasLimit , gasPrice , gasCap ,
940
+ payload ,
941
+ )
942
+ }
934
943
Expect (err ).NotTo (HaveOccurred ())
935
944
936
945
// Get the transaction bytes and sign them.
@@ -954,9 +963,9 @@ var _ = Describe("Multichain", func() {
954
963
err = accountClient .SubmitTx (ctx , accountTx )
955
964
Expect (err ).NotTo (HaveOccurred ())
956
965
logger .Debug ("submit tx" , zap .String ("from" , string (senderAddr )), zap .String ("to" , string (recipientAddr )), zap .Any ("txHash" , txHash ))
957
- return txHash , amount
966
+ return txHash , accountTx
958
967
}
959
- txHash , amount := sendTx ()
968
+ txHash , accountTx := sendTx ()
960
969
if accountChain .chain == multichain .Avalanche {
961
970
time .Sleep (5 * time .Second )
962
971
sendTx ()
@@ -969,10 +978,13 @@ var _ = Describe("Multichain", func() {
969
978
tx , confs , err := accountClient .Tx (ctx , txHash )
970
979
if err == nil && confs > 0 {
971
980
Expect (confs .Uint64 ()).To (BeNumerically (">" , 0 ))
972
- Expect (tx .Value ()).To (Equal (amount ))
973
- Expect (tx .From ()).To (Equal (senderAddr ))
974
- Expect (tx .To ()).To (Equal (recipientAddr ))
975
- Expect (tx .Value ()).To (Equal (amount ))
981
+ Expect (tx .Value ()).To (Equal (accountTx .Value ()))
982
+ Expect (tx .From ()).To (Equal (accountTx .From ()))
983
+ Expect (tx .To ()).To (Equal (accountTx .To ()))
984
+ // FIXME: Filecoin signed message hash is different, so we ignore this check for filecoin. Appropriate check should be added for Filecoin.
985
+ if accountChain .chain != multichain .Filecoin {
986
+ Expect (tx .Hash ()).To (Equal (accountTx .Hash ()))
987
+ }
976
988
break
977
989
}
978
990
// wait and retry querying for the transaction
@@ -982,7 +994,7 @@ var _ = Describe("Multichain", func() {
982
994
983
995
It ("should be able to fetch the latest block" , func () {
984
996
// Initialise client
985
- accountClient , _ := accountChain .initialise (accountChain .rpcURL , nil )
997
+ accountClient , _ := accountChain .initialise (accountChain .rpcURL )
986
998
987
999
latestBlock , err := accountClient .LatestBlock (ctx )
988
1000
Expect (err ).NotTo (HaveOccurred ())
0 commit comments