service_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package service
  2. import (
  3. "encoding/hex"
  4. "github.com/ethereum/go-ethereum/common"
  5. "github.com/ethereum/go-ethereum/core/types"
  6. tronaddr "github.com/fbsobreira/gotron-sdk/pkg/address"
  7. "github.com/fbsobreira/gotron-sdk/pkg/client"
  8. "google.golang.org/grpc"
  9. "key-manager/conf"
  10. "key-manager/dao"
  11. "math/big"
  12. "testing"
  13. )
  14. func TestTronAddress(t *testing.T) {
  15. inputdata := "a9059cbb000000000000000000000000c106d14c008c4e1eb09433c549beff124ddf067300000000000000000000000000000000000000000000000000000001e1f69180"
  16. input, err := hex.DecodeString(inputdata)
  17. if err != nil {
  18. t.Fatal(err)
  19. }
  20. var methodId [4]byte
  21. copy(methodId[:], input[:4])
  22. t.Log(hex.EncodeToString(methodId[:]))
  23. unpack, err := arguments.Unpack(input[4:])
  24. if err != nil {
  25. t.Fatal(err)
  26. }
  27. t.Log(unpack[0].(common.Address))
  28. t.Log(unpack[1].(*big.Int))
  29. addressTron := make([]byte, 0)
  30. addressTron = append(addressTron, tronaddr.TronBytePrefix)
  31. addressTron = append(addressTron, unpack[0].(common.Address).Bytes()...)
  32. t.Log(tronaddr.Address(addressTron).String())
  33. addr2, err := tronaddr.Base58ToAddress(tronaddr.Address(addressTron).String())
  34. if err != nil {
  35. t.Fatal(err)
  36. }
  37. t.Log("addr2", addr2.String())
  38. }
  39. func setup() *KeyManager {
  40. err := conf.InitConfig("../conf/conf.yaml")
  41. if err != nil {
  42. panic(err)
  43. }
  44. db, err := dao.InitMysqlDB()
  45. if err != nil {
  46. panic(err)
  47. }
  48. km, err := NewKeyManager(db, "111")
  49. if err != nil {
  50. panic(err)
  51. }
  52. return km
  53. }
  54. func TestKeyManager_Sign_Eth(t *testing.T) {
  55. km := setup()
  56. usdc := common.HexToAddress(ethUsdc)
  57. to := common.HexToAddress("0x08eF611f69ab48a31fFF7380088eAa106a3BD5A5")
  58. data, err := arguments.Pack(to, big.NewInt(1000000))
  59. if err != nil {
  60. t.Fatal(err)
  61. }
  62. input := append(transferId, data...)
  63. tx := &types.DynamicFeeTx{
  64. ChainID: big.NewInt(1),
  65. Nonce: 0,
  66. GasTipCap: big.NewInt(10000),
  67. GasFeeCap: big.NewInt(10000),
  68. Gas: 10000,
  69. To: &usdc,
  70. Value: big.NewInt(0),
  71. Data: input,
  72. }
  73. txStr, err := marshalJEthTx(types.NewTx(tx))
  74. if err != nil {
  75. t.Fatal(err)
  76. }
  77. t.Log("txStr", txStr)
  78. signReq := &SignRequest{
  79. Network: "eth",
  80. Sender: "0x313A1F70aCA7dE919ff2104F50f94985308E38A8",
  81. Tx: txStr,
  82. }
  83. res, err := km.Sign(nil, signReq)
  84. if err != nil {
  85. t.Fatal(err)
  86. }
  87. t.Log("signedTx", res.SignedTx)
  88. signedTx, err := unmarshalJEthTx(res.SignedTx)
  89. if err != nil {
  90. t.Fatal(err)
  91. }
  92. txStr2, err := signedTx.MarshalJSON()
  93. if err != nil {
  94. t.Fatal(err)
  95. }
  96. t.Log("txStr2", string(txStr2))
  97. }
  98. func TestKeyManager_Sign_Tron(t *testing.T) {
  99. km := setup()
  100. conn := client.NewGrpcClient("grpc.trongrid.io:50051")
  101. err := conn.Start(grpc.WithInsecure())
  102. if err != nil {
  103. t.Fatal(err)
  104. }
  105. transactionExtention, err := conn.TRC20Send("TW2aoftrhYE9SbRwyVGFPhDWQU9XzivhBt", "TN1HN14scJCuGMPmr4bh8rxknK5AG2zMgx", tronUsdt, big.NewInt(1000000), 50)
  106. if err != nil {
  107. t.Fatal(err)
  108. }
  109. t.Log("transactionExtention", transactionExtention.String())
  110. txStr, err := marshalJTronTx(transactionExtention.Transaction)
  111. if err != nil {
  112. t.Fatal(err)
  113. }
  114. t.Log("txStr", txStr)
  115. signReq := &SignRequest{
  116. Network: "tron",
  117. Sender: "TLZMwPhCvqGt8w4523L7ciMcEG4EWwxWKP",
  118. Tx: txStr,
  119. }
  120. res, err := km.Sign(nil, signReq)
  121. if err != nil {
  122. t.Fatal(err)
  123. }
  124. t.Log("signedTx", res.SignedTx)
  125. tx, err := unmarshalJTronTx(res.SignedTx)
  126. if err != nil {
  127. t.Fatal(err)
  128. }
  129. t.Log("tx", tx.String())
  130. }