diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ebade25..3e3d39a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: - name: Test run: | go mod tidy - go test ./... -race -covermode=atomic -coverprofile=coverage.out + go test ./... -covermode=atomic -coverprofile=coverage.out - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 env: diff --git a/README.md b/README.md index 3c12c33..f8fa42b 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Xpla.go is a Golang SDK for writing applications that interact with the Xpla blo |xpla.go|XPLA|Note| |:---:|:---:|:---:| -|v0.1.1-v0.1.2|[v1.2.3](https://github.com/xpladev/xpla/tree/v1.2.3)|| +|v0.1.1-v0.1.3|[v1.2.3](https://github.com/xpladev/xpla/tree/v1.2.3)|| |v0.1.0|[v1.2.2](https://github.com/xpladev/xpla/tree/v1.2.2)|| diff --git a/client/README.md b/client/README.md index ad89e52..6d05932 100644 --- a/client/README.md +++ b/client/README.md @@ -102,7 +102,9 @@ type Options struct { Pagination types.Pagination // Set output document name when created transaction with json file // "Generate only" is same that OutputDocument is not empty string - OutputDocument string + OutputDocument string + // Set from address manually + FromAddress sdk.AccAddress } ``` diff --git a/client/broadcast_handle.go b/client/broadcast_handle.go index 4706ebd..aab24c2 100644 --- a/client/broadcast_handle.go +++ b/client/broadcast_handle.go @@ -30,10 +30,13 @@ func broadcastTx(xplac *xplaClient, txBytes []byte, mode txtypes.BroadcastMode) return nil, util.LogErr(errors.ErrFailedToMarshal, err) } + xplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("POST", xplac.GetLcdURL()+broadcastUrl, reqBytes, xplac.GetContext()) if err != nil { + xplac.GetHttpMutex().Unlock() return nil, err } + xplac.GetHttpMutex().Unlock() var broadcastTxResponse txtypes.BroadcastTxResponse err = xplac.GetEncoding().Marshaler.UnmarshalJSON(out, &broadcastTxResponse) diff --git a/client/broadcast_test.go b/client/broadcast_test.go index 44e94bf..8c783f4 100644 --- a/client/broadcast_test.go +++ b/client/broadcast_test.go @@ -155,6 +155,28 @@ func (s *ClientTestSuite) TestBroadcastEVM() { s.xplac = provider.ResetXplac(s.xplac) } +func (s *ClientTestSuite) TestBroadcastSolidityContract() { + s.xplac.WithPrivateKey(s.accounts[0].PrivKey). + WithURL(s.apis[0]). + WithEvmRpc("http://" + s.network.Validators[0].AppConfig.JSONRPC.Address) + + testABIJsonFilePath := "../util/testutil/test_files/abi.json" + testBytecodeJsonFilePath := "../util/testutil/test_files/bytecode.json" + + deploySolContractMsg := types.DeploySolContractMsg{ + ABIJsonFilePath: testABIJsonFilePath, + BytecodeJsonFilePath: testBytecodeJsonFilePath, + Args: nil, + } + txbytes, err := s.xplac.DeploySolidityContract(deploySolContractMsg).CreateAndSignTx() + s.Require().NoError(err) + + _, err = s.xplac.Broadcast(txbytes) + s.Require().NoError(err) + + s.xplac = provider.ResetXplac(s.xplac) +} + func (s *ClientTestSuite) TestMultiSignature() { s.xplac.WithURL(s.apis[0]) rootDir := s.network.Validators[0].Dir diff --git a/client/info.go b/client/info.go index 73be1a7..ec842a7 100644 --- a/client/info.go +++ b/client/info.go @@ -23,10 +23,13 @@ func (xplac *xplaClient) LoadAccount(address sdk.AccAddress) (res authtypes.Acco if xplac.GetGrpcUrl() == "" { + xplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", xplac.GetLcdURL()+userInfoUrl+address.String(), nil, xplac.GetContext()) if err != nil { + xplac.GetHttpMutex().Unlock() return nil, err } + xplac.GetHttpMutex().Unlock() var response authtypes.QueryAccountResponse err = xplac.GetEncoding().Marshaler.UnmarshalJSON(out, &response) @@ -89,10 +92,13 @@ func (xplac *xplaClient) Simulate(txbuilder cmclient.TxBuilder) (*sdktx.Simulate return nil, util.LogErr(errors.ErrFailedToMarshal, err) } + xplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("POST", xplac.GetLcdURL()+simulateUrl, reqBytes, xplac.GetContext()) if err != nil { + xplac.GetHttpMutex().Unlock() return nil, err } + xplac.GetHttpMutex().Unlock() var response sdktx.SimulateResponse err = xplac.GetEncoding().Marshaler.UnmarshalJSON(out, &response) diff --git a/client/tx.go b/client/tx.go index bc49532..4d38412 100644 --- a/client/tx.go +++ b/client/tx.go @@ -121,6 +121,15 @@ func (xplac *xplaClient) CreateUnsignedTx() ([]byte, error) { if xplac.GetErr() != nil { return nil, xplac.GetErr() } + + if xplac.GetGasAdjustment() == "" { + xplac.WithGasAdjustment(types.DefaultGasAdjustment) + } + + if xplac.GetGasPrice() == "" { + xplac.WithGasPrice(types.DefaultGasPrice) + } + builder, err := setTxBuilderMsg(xplac) if err != nil { return nil, err diff --git a/client/xplaclient.go b/client/xplaclient.go index 6debce5..2d23828 100644 --- a/client/xplaclient.go +++ b/client/xplaclient.go @@ -2,6 +2,7 @@ package client import ( "context" + "sync" "github.com/xpladev/xpla.go/core" "github.com/xpladev/xpla.go/core/auth" @@ -44,6 +45,7 @@ type xplaClient struct { encodingConfig paramsapp.EncodingConfig grpc grpc1.ClientConn context context.Context + httpMutex *sync.Mutex opts provider.Options @@ -60,6 +62,7 @@ func NewXplaClient( chainId string, ) provider.XplaClient { var xplac xplaClient + xplac.httpMutex = new(sync.Mutex) return xplac. WithChainId(chainId). WithEncoding(util.MakeEncodingConfig()). @@ -89,6 +92,7 @@ func (xplac *xplaClient) WithOptions( WithEvmRpc(options.EvmRpcURL). WithPagination(options.Pagination). WithOutputDocument(options.OutputDocument). + WithFromAddress(options.FromAddress). UpdateXplacInCoreModule() } @@ -162,6 +166,15 @@ func (xplac *xplaClient) WithContext(ctx context.Context) provider.XplaClient { // Set private key func (xplac *xplaClient) WithPrivateKey(privateKey key.PrivateKey) provider.XplaClient { xplac.opts.PrivateKey = privateKey + if privateKey != nil { + addr, err := util.GetAddrByPrivKey(privateKey) + if err != nil { + xplac.err = err + return xplac.UpdateXplacInCoreModule() + } + // Automatically setting FromAddress when xpla client has the private key + xplac.opts.FromAddress = addr + } return xplac.UpdateXplacInCoreModule() } @@ -265,6 +278,7 @@ func (xplac *xplaClient) WithPagination(pagination types.Pagination) provider.Xp pageReq, err := core.ReadPageRequest(pagination) if err != nil { xplac.err = err + return xplac.UpdateXplacInCoreModule() } core.PageRequest = pageReq } else { @@ -280,6 +294,12 @@ func (xplac *xplaClient) WithOutputDocument(outputDocument string) provider.Xpla return xplac.UpdateXplacInCoreModule() } +// Set from address manually +func (xplac *xplaClient) WithFromAddress(fromAddress sdk.AccAddress) provider.XplaClient { + xplac.opts.FromAddress = fromAddress + return xplac.UpdateXplacInCoreModule() +} + // Set module name func (xplac *xplaClient) WithModule(module string) provider.XplaClient { xplac.module = module @@ -326,6 +346,8 @@ func (xplac *xplaClient) GetFeeGranter() sdk.AccAddress { return xplac.o func (xplac *xplaClient) GetTimeoutHeight() string { return xplac.opts.TimeoutHeight } func (xplac *xplaClient) GetPagination() *query.PageRequest { return core.PageRequest } func (xplac *xplaClient) GetOutputDocument() string { return xplac.opts.OutputDocument } +func (xplac *xplaClient) GetFromAddress() sdk.AccAddress { return xplac.opts.FromAddress } +func (xplac *xplaClient) GetHttpMutex() *sync.Mutex { return xplac.httpMutex } func (xplac *xplaClient) GetModule() string { return xplac.module } func (xplac *xplaClient) GetMsgType() string { return xplac.msgType } func (xplac *xplaClient) GetMsg() interface{} { return xplac.msg } diff --git a/controller/controller.go b/controller/controller.go index 5f5d6d8..a1220ab 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -27,7 +27,7 @@ import ( var once sync.Once var cc *coreController -// Controller is able to contol modules in the core package. +// Controller is able to control modules in the core package. // Route Tx & Query logic by message type. // If need to add new modules of XPLA, insert NewCoreModule in the core controller. type coreController struct { diff --git a/core/auth/query.go b/core/auth/query.go index 3a1ffca..1196490 100644 --- a/core/auth/query.go +++ b/core/auth/query.go @@ -193,10 +193,13 @@ func queryByLcdAuth(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/authz/external.go b/core/authz/external.go index 154466c..c2b6d06 100644 --- a/core/authz/external.go +++ b/core/authz/external.go @@ -20,7 +20,7 @@ func NewAuthzExternal(xplac provider.XplaClient) (e AuthzExternal) { // Grant authorization to an address. func (e AuthzExternal) AuthzGrant(authzGrantMsg types.AuthzGrantMsg) provider.XplaClient { - msg, err := MakeAuthzGrantMsg(authzGrantMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeAuthzGrantMsg(authzGrantMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -32,7 +32,7 @@ func (e AuthzExternal) AuthzGrant(authzGrantMsg types.AuthzGrantMsg) provider.Xp // Revoke authorization. func (e AuthzExternal) AuthzRevoke(authzRevokeMsg types.AuthzRevokeMsg) provider.XplaClient { - msg, err := MakeAuthzRevokeMsg(authzRevokeMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeAuthzRevokeMsg(authzRevokeMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/authz/external_test.go b/core/authz/external_test.go index 1f72554..385bd6d 100644 --- a/core/authz/external_test.go +++ b/core/authz/external_test.go @@ -17,7 +17,7 @@ func (s *IntegrationTestSuite) TestAuthzTx() { } s.xplac.AuthzGrant(authzGrantMsg) - makeAuthzGrantMsg, err := mauthz.MakeAuthzGrantMsg(authzGrantMsg, s.xplac.GetPrivateKey()) + makeAuthzGrantMsg, err := mauthz.MakeAuthzGrantMsg(authzGrantMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeAuthzGrantMsg, s.xplac.GetMsg()) @@ -39,7 +39,7 @@ func (s *IntegrationTestSuite) TestAuthzTx() { } s.xplac.AuthzRevoke(authzRevokeMsg) - makeAuthzRevokeMsg, err := mauthz.MakeAuthzRevokeMsg(authzRevokeMsg, s.xplac.GetPrivateKey()) + makeAuthzRevokeMsg, err := mauthz.MakeAuthzRevokeMsg(authzRevokeMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeAuthzRevokeMsg, s.xplac.GetMsg()) diff --git a/core/authz/module_test.go b/core/authz/module_test.go index 0e59b32..e96ccb5 100644 --- a/core/authz/module_test.go +++ b/core/authz/module_test.go @@ -32,7 +32,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { SpendLimit: "1000", } - makeAuthzGrantMsg, err := authz.MakeAuthzGrantMsg(authzGrantMsg, s.xplac.GetPrivateKey()) + makeAuthzGrantMsg, err := authz.MakeAuthzGrantMsg(authzGrantMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeAuthzGrantMsg @@ -47,7 +47,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { MsgType: "/cosmos.bank.v1beta1.MsgSend", } - makeAuthzRevokeMsg, err := authz.MakeAuthzRevokeMsg(authzRevokeMsg, s.xplac.GetPrivateKey()) + makeAuthzRevokeMsg, err := authz.MakeAuthzRevokeMsg(authzRevokeMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeAuthzRevokeMsg diff --git a/core/authz/msg.go b/core/authz/msg.go index d22bf97..fb8cb3f 100644 --- a/core/authz/msg.go +++ b/core/authz/msg.go @@ -1,20 +1,20 @@ package authz import ( + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/authz" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla/app/params" ) // (Tx) make msg - authz grant -func MakeAuthzGrantMsg(authzGrantMsg types.AuthzGrantMsg, privKey key.PrivateKey) (authz.MsgGrant, error) { - return parseAuthzGrantArgs(authzGrantMsg, privKey) +func MakeAuthzGrantMsg(authzGrantMsg types.AuthzGrantMsg, granter sdk.AccAddress) (authz.MsgGrant, error) { + return parseAuthzGrantArgs(authzGrantMsg, granter) } // (Tx) make msg - revoke -func MakeAuthzRevokeMsg(authzRevokeMsg types.AuthzRevokeMsg, privKey key.PrivateKey) (authz.MsgRevoke, error) { - return parseAuthzRevokeArgs(authzRevokeMsg, privKey) +func MakeAuthzRevokeMsg(authzRevokeMsg types.AuthzRevokeMsg, granter sdk.AccAddress) (authz.MsgRevoke, error) { + return parseAuthzRevokeArgs(authzRevokeMsg, granter) } // (Tx) make msg - authz execute diff --git a/core/authz/msg_parse.go b/core/authz/msg_parse.go index c2a4725..1969735 100644 --- a/core/authz/msg_parse.go +++ b/core/authz/msg_parse.go @@ -9,7 +9,6 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -17,11 +16,7 @@ import ( ) // Parsing - authz grant -func parseAuthzGrantArgs(authzGrantMsg types.AuthzGrantMsg, privKey key.PrivateKey) (authz.MsgGrant, error) { - granter, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return authz.MsgGrant{}, util.LogErr(errors.ErrParse, err) - } +func parseAuthzGrantArgs(authzGrantMsg types.AuthzGrantMsg, granter sdk.AccAddress) (authz.MsgGrant, error) { if authzGrantMsg.Granter != granter.String() { return authz.MsgGrant{}, util.LogErr(errors.ErrAccountNotMatch, "Account address generated by private key is not equal input granter of msg") } @@ -108,11 +103,7 @@ func parseAuthzGrantArgs(authzGrantMsg types.AuthzGrantMsg, privKey key.PrivateK } // Parsing - revoke -func parseAuthzRevokeArgs(authzRevokeMsg types.AuthzRevokeMsg, privKey key.PrivateKey) (authz.MsgRevoke, error) { - granter, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return authz.MsgRevoke{}, util.LogErr(errors.ErrParse, err) - } +func parseAuthzRevokeArgs(authzRevokeMsg types.AuthzRevokeMsg, granter sdk.AccAddress) (authz.MsgRevoke, error) { if authzRevokeMsg.Granter != granter.String() { return authz.MsgRevoke{}, util.LogErr(errors.ErrAccountNotMatch, "Account address generated by private key is not equal input granter of msg") } diff --git a/core/authz/query.go b/core/authz/query.go index cb8dd0f..91da2ce 100644 --- a/core/authz/query.go +++ b/core/authz/query.go @@ -111,10 +111,13 @@ func queryByLcdAuthz(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/bank/external.go b/core/bank/external.go index d2ca4ff..95d41df 100644 --- a/core/bank/external.go +++ b/core/bank/external.go @@ -20,7 +20,7 @@ func NewBankExternal(xplac provider.XplaClient) (e BankExternal) { // Send funds from one account to another. func (e BankExternal) BankSend(bankSendMsg types.BankSendMsg) provider.XplaClient { - msg, err := MakeBankSendMsg(bankSendMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeBankSendMsg(bankSendMsg) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/bank/external_test.go b/core/bank/external_test.go index b4f8812..59c37b8 100644 --- a/core/bank/external_test.go +++ b/core/bank/external_test.go @@ -16,7 +16,7 @@ func (s *IntegrationTestSuite) TestBankTx() { } s.xplac.BankSend(bankSendMsg) - makeBankSendMsg, err := mbank.MakeBankSendMsg(bankSendMsg, s.xplac.GetPrivateKey()) + makeBankSendMsg, err := mbank.MakeBankSendMsg(bankSendMsg) s.Require().NoError(err) s.Require().Equal(makeBankSendMsg, s.xplac.GetMsg()) diff --git a/core/bank/module_test.go b/core/bank/module_test.go index 1a9c0a0..4fe3a0f 100644 --- a/core/bank/module_test.go +++ b/core/bank/module_test.go @@ -31,7 +31,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Amount: "1000", } - makeBankSendMsg, err := bank.MakeBankSendMsg(bankSendMsg, s.xplac.GetPrivateKey()) + makeBankSendMsg, err := bank.MakeBankSendMsg(bankSendMsg) s.Require().NoError(err) testMsg = makeBankSendMsg diff --git a/core/bank/msg.go b/core/bank/msg.go index 268e6f5..142e701 100644 --- a/core/bank/msg.go +++ b/core/bank/msg.go @@ -2,7 +2,6 @@ package bank import ( "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -11,8 +10,8 @@ import ( ) // (Tx) make msg - bank send -func MakeBankSendMsg(bankSendMsg types.BankSendMsg, privKey key.PrivateKey) (banktypes.MsgSend, error) { - return parseBankSendArgs(bankSendMsg, privKey) +func MakeBankSendMsg(bankSendMsg types.BankSendMsg) (banktypes.MsgSend, error) { + return parseBankSendArgs(bankSendMsg) } // (Query) make msg - all balances diff --git a/core/bank/msg_parse.go b/core/bank/msg_parse.go index 4c7caf4..aee9812 100644 --- a/core/bank/msg_parse.go +++ b/core/bank/msg_parse.go @@ -2,7 +2,6 @@ package bank import ( "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -12,7 +11,7 @@ import ( ) // Parsing - bank send -func parseBankSendArgs(bankSendMsg types.BankSendMsg, privKey key.PrivateKey) (banktypes.MsgSend, error) { +func parseBankSendArgs(bankSendMsg types.BankSendMsg) (banktypes.MsgSend, error) { denom := types.XplaDenom if bankSendMsg.FromAddress == "" || bankSendMsg.ToAddress == "" || bankSendMsg.Amount == "" { diff --git a/core/bank/query.go b/core/bank/query.go index 0ffd60c..aba1b2a 100644 --- a/core/bank/query.go +++ b/core/bank/query.go @@ -149,10 +149,13 @@ func queryByLcdBank(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/base/query.go b/core/base/query.go index 0fa6bbe..859d761 100644 --- a/core/base/query.go +++ b/core/base/query.go @@ -162,10 +162,13 @@ func queryByLcdBase(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/crisis/external.go b/core/crisis/external.go index 1929597..4cc3cf6 100644 --- a/core/crisis/external.go +++ b/core/crisis/external.go @@ -18,7 +18,7 @@ func NewCrisisExternal(xplac provider.XplaClient) (e CrisisExternal) { // Submit proof that an invariant broken to halt the chain. func (e CrisisExternal) InvariantBroken(invariantBrokenMsg types.InvariantBrokenMsg) provider.XplaClient { - msg, err := MakeInvariantRouteMsg(invariantBrokenMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeInvariantRouteMsg(invariantBrokenMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/crisis/external_test.go b/core/crisis/external_test.go index edfec22..f8a65e0 100644 --- a/core/crisis/external_test.go +++ b/core/crisis/external_test.go @@ -21,7 +21,7 @@ func (s *IntegrationTestSuite) TestCrisisTx() { } s.xplac.InvariantBroken(invariantBrokenMsg) - makeInvariantRouteMsg, err := mcrisis.MakeInvariantRouteMsg(invariantBrokenMsg, s.xplac.GetPrivateKey()) + makeInvariantRouteMsg, err := mcrisis.MakeInvariantRouteMsg(invariantBrokenMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeInvariantRouteMsg, s.xplac.GetMsg()) diff --git a/core/crisis/module_test.go b/core/crisis/module_test.go index 160ffe7..3879bda 100644 --- a/core/crisis/module_test.go +++ b/core/crisis/module_test.go @@ -78,7 +78,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { } s.xplac.InvariantBroken(invariantBrokenMsg) - makeInvariantRouteMsg, err := crisis.MakeInvariantRouteMsg(invariantBrokenMsg, s.xplac.GetPrivateKey()) + makeInvariantRouteMsg, err := crisis.MakeInvariantRouteMsg(invariantBrokenMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeInvariantRouteMsg diff --git a/core/crisis/msg.go b/core/crisis/msg.go index b9badcc..021d618 100644 --- a/core/crisis/msg.go +++ b/core/crisis/msg.go @@ -1,13 +1,13 @@ package crisis import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" + sdk "github.com/cosmos/cosmos-sdk/types" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" ) // (Tx) make msg - invariant broken -func MakeInvariantRouteMsg(invariantBrokenMsg types.InvariantBrokenMsg, privKey key.PrivateKey) (crisistypes.MsgVerifyInvariant, error) { - return parseInvariantBrokenArgs(invariantBrokenMsg, privKey) +func MakeInvariantRouteMsg(invariantBrokenMsg types.InvariantBrokenMsg, senderAddr sdk.AccAddress) (crisistypes.MsgVerifyInvariant, error) { + return parseInvariantBrokenArgs(invariantBrokenMsg, senderAddr) } diff --git a/core/crisis/msg_parse.go b/core/crisis/msg_parse.go index 12a8f25..cebb301 100644 --- a/core/crisis/msg_parse.go +++ b/core/crisis/msg_parse.go @@ -1,24 +1,19 @@ package crisis import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" + sdk "github.com/cosmos/cosmos-sdk/types" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" ) // Parsing - invariant broken -func parseInvariantBrokenArgs(invariantBrokenMsg types.InvariantBrokenMsg, privKey key.PrivateKey) (crisistypes.MsgVerifyInvariant, error) { +func parseInvariantBrokenArgs(invariantBrokenMsg types.InvariantBrokenMsg, senderAddr sdk.AccAddress) (crisistypes.MsgVerifyInvariant, error) { if invariantBrokenMsg.ModuleName == "" || invariantBrokenMsg.InvariantRoute == "" { return crisistypes.MsgVerifyInvariant{}, util.LogErr(errors.ErrInsufficientParams, "invalid module name or invariant route") } - - senderAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return crisistypes.MsgVerifyInvariant{}, util.LogErr(errors.ErrParse, err) - } msg := crisistypes.NewMsgVerifyInvariant(senderAddr, invariantBrokenMsg.ModuleName, invariantBrokenMsg.InvariantRoute) return *msg, nil diff --git a/core/distribution/external.go b/core/distribution/external.go index 9906c06..8e5191c 100644 --- a/core/distribution/external.go +++ b/core/distribution/external.go @@ -20,7 +20,7 @@ func NewDistributionExternal(xplac provider.XplaClient) (e DistributionExternal) // Funds the community pool with the specified amount. func (e DistributionExternal) FundCommunityPool(fundCommunityPoolMsg types.FundCommunityPoolMsg) provider.XplaClient { - msg, err := MakeFundCommunityPoolMsg(fundCommunityPoolMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeFundCommunityPoolMsg(fundCommunityPoolMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -32,7 +32,7 @@ func (e DistributionExternal) FundCommunityPool(fundCommunityPoolMsg types.FundC // Submit a community pool spend proposal. func (e DistributionExternal) CommunityPoolSpend(communityPoolSpendMsg types.CommunityPoolSpendMsg) provider.XplaClient { - msg, err := MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg, e.Xplac.GetPrivateKey(), e.Xplac.GetEncoding()) + msg, err := MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg, e.Xplac.GetFromAddress(), e.Xplac.GetEncoding()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -44,7 +44,7 @@ func (e DistributionExternal) CommunityPoolSpend(communityPoolSpendMsg types.Com // Withdraw rewards from a given delegation address, and optionally withdraw validator commission if the delegation address given is a validator operator. func (e DistributionExternal) WithdrawRewards(withdrawRewardsMsg types.WithdrawRewardsMsg) provider.XplaClient { - msg, err := MakeWithdrawRewardsMsg(withdrawRewardsMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeWithdrawRewardsMsg(withdrawRewardsMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -56,7 +56,7 @@ func (e DistributionExternal) WithdrawRewards(withdrawRewardsMsg types.WithdrawR // Withdraw all delegations rewards for a delegator. func (e DistributionExternal) WithdrawAllRewards() provider.XplaClient { - msg, err := MakeWithdrawAllRewardsMsg(e.Xplac.GetPrivateKey(), e.Xplac.GetGrpcClient(), e.Xplac.GetContext()) + msg, err := MakeWithdrawAllRewardsMsg(e.Xplac.GetFromAddress(), e.Xplac.GetGrpcClient(), e.Xplac.GetContext()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -68,7 +68,7 @@ func (e DistributionExternal) WithdrawAllRewards() provider.XplaClient { // Change the default withdraw address for rewards associated with an address. func (e DistributionExternal) SetWithdrawAddr(setWithdrawAddrMsg types.SetWithdrawAddrMsg) provider.XplaClient { - msg, err := MakeSetWithdrawAddrMsg(setWithdrawAddrMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeSetWithdrawAddrMsg(setWithdrawAddrMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/distribution/external_test.go b/core/distribution/external_test.go index e84097a..c36181b 100644 --- a/core/distribution/external_test.go +++ b/core/distribution/external_test.go @@ -21,7 +21,7 @@ func (s *IntegrationTestSuite) TestDistributionTx() { } s.xplac.FundCommunityPool(fundCommunityPoolMsg) - makeFundCommunityPoolMsg, err := mdist.MakeFundCommunityPoolMsg(fundCommunityPoolMsg, s.xplac.GetPrivateKey()) + makeFundCommunityPoolMsg, err := mdist.MakeFundCommunityPoolMsg(fundCommunityPoolMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeFundCommunityPoolMsg, s.xplac.GetMsg()) @@ -45,7 +45,7 @@ func (s *IntegrationTestSuite) TestDistributionTx() { } s.xplac.CommunityPoolSpend(communityPoolSpendMsg) - makeProposalCommunityPoolSpendMsg, err := mdist.MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg, s.xplac.GetPrivateKey(), s.xplac.GetEncoding()) + makeProposalCommunityPoolSpendMsg, err := mdist.MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg, s.xplac.GetFromAddress(), s.xplac.GetEncoding()) s.Require().NoError(err) s.Require().Equal(makeProposalCommunityPoolSpendMsg, s.xplac.GetMsg()) @@ -67,7 +67,7 @@ func (s *IntegrationTestSuite) TestDistributionTx() { } s.xplac.WithdrawRewards(withdrawRewardsMsg) - makeWithdrawRewardsMsg, err := mdist.MakeWithdrawRewardsMsg(withdrawRewardsMsg, s.xplac.GetPrivateKey()) + makeWithdrawRewardsMsg, err := mdist.MakeWithdrawRewardsMsg(withdrawRewardsMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeWithdrawRewardsMsg, s.xplac.GetMsg()) @@ -87,7 +87,7 @@ func (s *IntegrationTestSuite) TestDistributionTx() { } s.xplac.SetWithdrawAddr(setWithdrawAddrMsg) - makeSetWithdrawAddrMsg, err := mdist.MakeSetWithdrawAddrMsg(setWithdrawAddrMsg, s.xplac.GetPrivateKey()) + makeSetWithdrawAddrMsg, err := mdist.MakeSetWithdrawAddrMsg(setWithdrawAddrMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeSetWithdrawAddrMsg, s.xplac.GetMsg()) diff --git a/core/distribution/module_test.go b/core/distribution/module_test.go index b46e50f..8525e92 100644 --- a/core/distribution/module_test.go +++ b/core/distribution/module_test.go @@ -30,7 +30,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Amount: "1000", } - makeFundCommunityPoolMsg, err := distribution.MakeFundCommunityPoolMsg(fundCommunityPoolMsg, s.xplac.GetPrivateKey()) + makeFundCommunityPoolMsg, err := distribution.MakeFundCommunityPoolMsg(fundCommunityPoolMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeFundCommunityPoolMsg @@ -47,7 +47,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Deposit: "1000", } - makeProposalCommunityPoolSpendMsg, err := distribution.MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg, s.xplac.GetPrivateKey(), s.xplac.GetEncoding()) + makeProposalCommunityPoolSpendMsg, err := distribution.MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg, s.xplac.GetFromAddress(), s.xplac.GetEncoding()) s.Require().NoError(err) testMsg = makeProposalCommunityPoolSpendMsg @@ -62,7 +62,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Commission: true, } - makeWithdrawRewardsMsg, err := distribution.MakeWithdrawRewardsMsg(withdrawRewardsMsg, s.xplac.GetPrivateKey()) + makeWithdrawRewardsMsg, err := distribution.MakeWithdrawRewardsMsg(withdrawRewardsMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeWithdrawRewardsMsg @@ -74,7 +74,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { WithdrawAddr: accounts[0].Address.String(), } - makeSetWithdrawAddrMsg, err := distribution.MakeSetWithdrawAddrMsg(setWithdrawAddrMsg, s.xplac.GetPrivateKey()) + makeSetWithdrawAddrMsg, err := distribution.MakeSetWithdrawAddrMsg(setWithdrawAddrMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeSetWithdrawAddrMsg diff --git a/core/distribution/msg.go b/core/distribution/msg.go index 770af62..3bd11b4 100644 --- a/core/distribution/msg.go +++ b/core/distribution/msg.go @@ -1,9 +1,9 @@ package distribution import ( - "github.com/xpladev/xpla.go/key" + "context" + "github.com/xpladev/xpla.go/types" - "golang.org/x/net/context" sdk "github.com/cosmos/cosmos-sdk/types" disttypes "github.com/cosmos/cosmos-sdk/x/distribution/types" @@ -13,28 +13,28 @@ import ( ) // (Tx) make msg - fund community pool -func MakeFundCommunityPoolMsg(fundCommunityPoolMsg types.FundCommunityPoolMsg, privKey key.PrivateKey) (disttypes.MsgFundCommunityPool, error) { - return parseFundCommunityPoolArgs(fundCommunityPoolMsg, privKey) +func MakeFundCommunityPoolMsg(fundCommunityPoolMsg types.FundCommunityPoolMsg, depositorAddr sdk.AccAddress) (disttypes.MsgFundCommunityPool, error) { + return parseFundCommunityPoolArgs(fundCommunityPoolMsg, depositorAddr) } // (Tx) make msg - proposal community pool -func MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg types.CommunityPoolSpendMsg, privKey key.PrivateKey, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { - return parseProposalCommunityPoolSpendArgs(communityPoolSpendMsg, privKey, encodingConfig) +func MakeProposalCommunityPoolSpendMsg(communityPoolSpendMsg types.CommunityPoolSpendMsg, from sdk.AccAddress, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { + return parseProposalCommunityPoolSpendArgs(communityPoolSpendMsg, from, encodingConfig) } // (Tx) make msg - withdraw rewards -func MakeWithdrawRewardsMsg(withdrawRewardsMsg types.WithdrawRewardsMsg, privKey key.PrivateKey) ([]sdk.Msg, error) { - return parseWithdrawRewardsArgs(withdrawRewardsMsg, privKey) +func MakeWithdrawRewardsMsg(withdrawRewardsMsg types.WithdrawRewardsMsg, delAddr sdk.AccAddress) ([]sdk.Msg, error) { + return parseWithdrawRewardsArgs(withdrawRewardsMsg, delAddr) } // (Tx) make msg - withdraw all rewards -func MakeWithdrawAllRewardsMsg(privKey key.PrivateKey, grpcConn grpc.ClientConn, ctx context.Context) ([]sdk.Msg, error) { - return parseWithdrawAllRewardsArgs(privKey, grpcConn, ctx) +func MakeWithdrawAllRewardsMsg(delAddr sdk.AccAddress, grpcConn grpc.ClientConn, ctx context.Context) ([]sdk.Msg, error) { + return parseWithdrawAllRewardsArgs(delAddr, grpcConn, ctx) } // (Tx) make msg - withdraw address -func MakeSetWithdrawAddrMsg(setWithdrawAddrMsg types.SetWithdrawAddrMsg, privKey key.PrivateKey) (disttypes.MsgSetWithdrawAddress, error) { - return parseSetWithdrawAddrArgs(setWithdrawAddrMsg, privKey) +func MakeSetWithdrawAddrMsg(setWithdrawAddrMsg types.SetWithdrawAddrMsg, delAddr sdk.AccAddress) (disttypes.MsgSetWithdrawAddress, error) { + return parseSetWithdrawAddrArgs(setWithdrawAddrMsg, delAddr) } // (Query) make msg - distribution params diff --git a/core/distribution/msg_parse.go b/core/distribution/msg_parse.go index 4a96aaa..dc86326 100644 --- a/core/distribution/msg_parse.go +++ b/core/distribution/msg_parse.go @@ -4,7 +4,6 @@ import ( "context" "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -18,12 +17,7 @@ import ( ) // Parsing - fund community pool -func parseFundCommunityPoolArgs(fundCommunityPoolMsg types.FundCommunityPoolMsg, privKey key.PrivateKey) (disttypes.MsgFundCommunityPool, error) { - depositorAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return disttypes.MsgFundCommunityPool{}, util.LogErr(errors.ErrParse, err) - } - +func parseFundCommunityPoolArgs(fundCommunityPoolMsg types.FundCommunityPoolMsg, depositorAddr sdk.AccAddress) (disttypes.MsgFundCommunityPool, error) { amount, err := sdk.ParseCoinsNormalized(util.DenomAdd(fundCommunityPoolMsg.Amount)) if err != nil { return disttypes.MsgFundCommunityPool{}, util.LogErr(errors.ErrParse, err) @@ -34,7 +28,7 @@ func parseFundCommunityPoolArgs(fundCommunityPoolMsg types.FundCommunityPoolMsg, } // Parsing - proposal community pool -func parseProposalCommunityPoolSpendArgs(communityPoolSpendMsg types.CommunityPoolSpendMsg, privKey key.PrivateKey, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { +func parseProposalCommunityPoolSpendArgs(communityPoolSpendMsg types.CommunityPoolSpendMsg, from sdk.AccAddress, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { var proposal disttypes.CommunityPoolSpendProposalWithDeposit var err error @@ -61,10 +55,6 @@ func parseProposalCommunityPoolSpendArgs(communityPoolSpendMsg types.CommunityPo return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) } - from, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) - } recpAddr, err := sdk.AccAddressFromBech32(proposal.Recipient) if err != nil { return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) @@ -81,12 +71,7 @@ func parseProposalCommunityPoolSpendArgs(communityPoolSpendMsg types.CommunityPo } // Parsing - withdraw rewards -func parseWithdrawRewardsArgs(withdrawRewardsMsg types.WithdrawRewardsMsg, privKey key.PrivateKey) ([]sdk.Msg, error) { - delAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return nil, util.LogErr(errors.ErrParse, err) - } - +func parseWithdrawRewardsArgs(withdrawRewardsMsg types.WithdrawRewardsMsg, delAddr sdk.AccAddress) ([]sdk.Msg, error) { valAddr, err := sdk.ValAddressFromBech32(withdrawRewardsMsg.ValidatorAddr) if err != nil { return nil, util.LogErr(errors.ErrParse, err) @@ -107,11 +92,7 @@ func parseWithdrawRewardsArgs(withdrawRewardsMsg types.WithdrawRewardsMsg, privK } // Parsing - withdraw all rewards -func parseWithdrawAllRewardsArgs(privKey key.PrivateKey, grpcConn grpc.ClientConn, ctx context.Context) ([]sdk.Msg, error) { - delAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return nil, util.LogErr(errors.ErrParse, err) - } +func parseWithdrawAllRewardsArgs(delAddr sdk.AccAddress, grpcConn grpc.ClientConn, ctx context.Context) ([]sdk.Msg, error) { queryClient := disttypes.NewQueryClient(grpcConn) delValsRes, err := queryClient.DelegatorValidators( ctx, @@ -142,11 +123,7 @@ func parseWithdrawAllRewardsArgs(privKey key.PrivateKey, grpcConn grpc.ClientCon } // Parsing - set withdraw addr -func parseSetWithdrawAddrArgs(setWithdrawAddrMsg types.SetWithdrawAddrMsg, privKey key.PrivateKey) (disttypes.MsgSetWithdrawAddress, error) { - delAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return disttypes.MsgSetWithdrawAddress{}, util.LogErr(errors.ErrParse, err) - } +func parseSetWithdrawAddrArgs(setWithdrawAddrMsg types.SetWithdrawAddrMsg, delAddr sdk.AccAddress) (disttypes.MsgSetWithdrawAddress, error) { withdrawAddr, err := sdk.AccAddressFromBech32(setWithdrawAddrMsg.WithdrawAddr) if err != nil { return disttypes.MsgSetWithdrawAddress{}, util.LogErr(errors.ErrParse, err) diff --git a/core/distribution/query.go b/core/distribution/query.go index c841d4a..3ba4ec0 100644 --- a/core/distribution/query.go +++ b/core/distribution/query.go @@ -174,10 +174,13 @@ func queryByLcdDist(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/evidence/query.go b/core/evidence/query.go index 39b8eb9..b293e2f 100644 --- a/core/evidence/query.go +++ b/core/evidence/query.go @@ -84,10 +84,13 @@ func queryByLcdEvidence(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil diff --git a/core/evm/external.go b/core/evm/external.go index 222045b..1dc4a89 100644 --- a/core/evm/external.go +++ b/core/evm/external.go @@ -20,7 +20,7 @@ func NewEvmExternal(xplac provider.XplaClient) (e EvmExternal) { // Send coind by using evm client. func (e EvmExternal) EvmSendCoin(sendCoinMsg types.SendCoinMsg) provider.XplaClient { - msg, err := MakeSendCoinMsg(sendCoinMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeSendCoinMsg(sendCoinMsg) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/evm/external_test.go b/core/evm/external_test.go index 0bd4d89..cd39520 100644 --- a/core/evm/external_test.go +++ b/core/evm/external_test.go @@ -22,7 +22,7 @@ func (s *IntegrationTestSuite) TestEvmTx() { } s.xplac.EvmSendCoin(sendCoinMsg) - makeSendCoinMsg, err := mevm.MakeSendCoinMsg(sendCoinMsg, s.xplac.GetPrivateKey()) + makeSendCoinMsg, err := mevm.MakeSendCoinMsg(sendCoinMsg) s.Require().NoError(err) s.Require().Equal(makeSendCoinMsg, s.xplac.GetMsg()) diff --git a/core/evm/msg.go b/core/evm/msg.go index 395d2d2..7458ed5 100644 --- a/core/evm/msg.go +++ b/core/evm/msg.go @@ -1,13 +1,12 @@ package evm import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" ) // (Tx) make msg - send coin -func MakeSendCoinMsg(sendCoinMsg types.SendCoinMsg, privKey key.PrivateKey) (types.SendCoinMsg, error) { - return parseSendCoinArgs(sendCoinMsg, privKey) +func MakeSendCoinMsg(sendCoinMsg types.SendCoinMsg) (types.SendCoinMsg, error) { + return parseSendCoinArgs(sendCoinMsg) } // (Tx) make msg - deploy solidity contract diff --git a/core/evm/msg_parse.go b/core/evm/msg_parse.go index 5940645..b8ce920 100644 --- a/core/evm/msg_parse.go +++ b/core/evm/msg_parse.go @@ -1,7 +1,6 @@ package evm import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -12,12 +11,7 @@ import ( ) // Parsing - send coin -func parseSendCoinArgs(sendCoinMsg types.SendCoinMsg, privKey key.PrivateKey) (types.SendCoinMsg, error) { - from := util.FromStringToByte20Address(sendCoinMsg.FromAddress) - if from != util.FromStringToByte20Address(privKey.PubKey().Address().String()) { - return types.SendCoinMsg{}, util.LogErr(errors.ErrInvalidRequest, "Account address generated by private key is not equal") - } - +func parseSendCoinArgs(sendCoinMsg types.SendCoinMsg) (types.SendCoinMsg, error) { sendCoinMsg.Amount = util.DenomRemove(sendCoinMsg.Amount) return sendCoinMsg, nil } diff --git a/core/feegrant/external.go b/core/feegrant/external.go index 7c67210..0d24ec8 100644 --- a/core/feegrant/external.go +++ b/core/feegrant/external.go @@ -20,7 +20,7 @@ func NewFeegrantExternal(xplac provider.XplaClient) (e FeegrantExternal) { // Grant fee allowance to an address. func (e FeegrantExternal) FeeGrant(grantMsg types.FeeGrantMsg) provider.XplaClient { - msg, err := MakeFeeGrantMsg(grantMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeFeeGrantMsg(grantMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -32,7 +32,7 @@ func (e FeegrantExternal) FeeGrant(grantMsg types.FeeGrantMsg) provider.XplaClie // Revoke fee-grant. func (e FeegrantExternal) RevokeFeeGrant(revokeGrantMsg types.RevokeFeeGrantMsg) provider.XplaClient { - msg, err := MakeRevokeFeeGrantMsg(revokeGrantMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeRevokeFeeGrantMsg(revokeGrantMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/feegrant/external_test.go b/core/feegrant/external_test.go index efba162..7195910 100644 --- a/core/feegrant/external_test.go +++ b/core/feegrant/external_test.go @@ -19,7 +19,7 @@ func (s *IntegrationTestSuite) TestFeegrantTx() { } s.xplac.FeeGrant(feeGrantMsg) - makeFeeGrantMsg, err := mfeegrant.MakeFeeGrantMsg(feeGrantMsg, s.xplac.GetPrivateKey()) + makeFeeGrantMsg, err := mfeegrant.MakeFeeGrantMsg(feeGrantMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeFeeGrantMsg, s.xplac.GetMsg()) @@ -40,7 +40,7 @@ func (s *IntegrationTestSuite) TestFeegrantTx() { } s.xplac.RevokeFeeGrant(revokeFeeGrantMsg) - makeRevokeFeeGrantMsg, err := mfeegrant.MakeRevokeFeeGrantMsg(revokeFeeGrantMsg, s.xplac.GetPrivateKey()) + makeRevokeFeeGrantMsg, err := mfeegrant.MakeRevokeFeeGrantMsg(revokeFeeGrantMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeRevokeFeeGrantMsg, s.xplac.GetMsg()) diff --git a/core/feegrant/module_test.go b/core/feegrant/module_test.go index 634935a..facee33 100644 --- a/core/feegrant/module_test.go +++ b/core/feegrant/module_test.go @@ -34,7 +34,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Expiration: "2100-01-01T23:59:59+00:00", } - makeFeeGrantMsg, err := feegrant.MakeFeeGrantMsg(feeGrantMsg, s.xplac.GetPrivateKey()) + makeFeeGrantMsg, err := feegrant.MakeFeeGrantMsg(feeGrantMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeFeeGrantMsg @@ -48,7 +48,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Grantee: accounts[1].Address.String(), } - makeRevokeFeeGrantMsg, err := feegrant.MakeRevokeFeeGrantMsg(revokeFeeGrantMsg, s.xplac.GetPrivateKey()) + makeRevokeFeeGrantMsg, err := feegrant.MakeRevokeFeeGrantMsg(revokeFeeGrantMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeRevokeFeeGrantMsg diff --git a/core/feegrant/msg.go b/core/feegrant/msg.go index 3223f32..43d6cc7 100644 --- a/core/feegrant/msg.go +++ b/core/feegrant/msg.go @@ -1,19 +1,20 @@ package feegrant import ( - "github.com/cosmos/cosmos-sdk/x/feegrant" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/feegrant" ) // (Tx) make msg - fee grant -func MakeFeeGrantMsg(feeGrantMsg types.FeeGrantMsg, privKey key.PrivateKey) (feegrant.MsgGrantAllowance, error) { - return parseFeeGrantArgs(feeGrantMsg, privKey) +func MakeFeeGrantMsg(feeGrantMsg types.FeeGrantMsg, granter sdk.AccAddress) (feegrant.MsgGrantAllowance, error) { + return parseFeeGrantArgs(feeGrantMsg, granter) } // (Tx) make msg - fee grant revoke -func MakeRevokeFeeGrantMsg(revokeFeeGrantMsg types.RevokeFeeGrantMsg, privKey key.PrivateKey) (feegrant.MsgRevokeAllowance, error) { - return parseRevokeFeeGrantArgs(revokeFeeGrantMsg, privKey) +func MakeRevokeFeeGrantMsg(revokeFeeGrantMsg types.RevokeFeeGrantMsg, granter sdk.AccAddress) (feegrant.MsgRevokeAllowance, error) { + return parseRevokeFeeGrantArgs(revokeFeeGrantMsg, granter) } // (Query) make msg - query fee grants diff --git a/core/feegrant/msg_parse.go b/core/feegrant/msg_parse.go index ce25d58..858a14b 100644 --- a/core/feegrant/msg_parse.go +++ b/core/feegrant/msg_parse.go @@ -4,7 +4,6 @@ import ( "time" "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -14,12 +13,7 @@ import ( ) // Parsing - fee grant -func parseFeeGrantArgs(feeGrantMsg types.FeeGrantMsg, privKey key.PrivateKey) (feegrant.MsgGrantAllowance, error) { - granter, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return feegrant.MsgGrantAllowance{}, util.LogErr(errors.ErrParse, err) - } - +func parseFeeGrantArgs(feeGrantMsg types.FeeGrantMsg, granter sdk.AccAddress) (feegrant.MsgGrantAllowance, error) { if feeGrantMsg.Granter != granter.String() { return feegrant.MsgGrantAllowance{}, util.LogErr(errors.ErrAccountNotMatch, "Account address generated by private key is not equal input granter of msg") } @@ -105,12 +99,7 @@ func parseFeeGrantArgs(feeGrantMsg types.FeeGrantMsg, privKey key.PrivateKey) (f } // Parsing - fee grant revoke -func parseRevokeFeeGrantArgs(revokeFeeGrantMsg types.RevokeFeeGrantMsg, privKey key.PrivateKey) (feegrant.MsgRevokeAllowance, error) { - granter, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return feegrant.MsgRevokeAllowance{}, util.LogErr(errors.ErrParse, err) - } - +func parseRevokeFeeGrantArgs(revokeFeeGrantMsg types.RevokeFeeGrantMsg, granter sdk.AccAddress) (feegrant.MsgRevokeAllowance, error) { if revokeFeeGrantMsg.Granter != granter.String() { return feegrant.MsgRevokeAllowance{}, util.LogErr(errors.ErrAccountNotMatch, "Account address generated by private key is not equal input granter of msg") } diff --git a/core/feegrant/query.go b/core/feegrant/query.go index 162439b..39dfa6a 100644 --- a/core/feegrant/query.go +++ b/core/feegrant/query.go @@ -103,10 +103,13 @@ func queryByLcdFeegrant(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil diff --git a/core/gov/external.go b/core/gov/external.go index 090cff1..734af89 100644 --- a/core/gov/external.go +++ b/core/gov/external.go @@ -20,7 +20,7 @@ func NewGovExternal(xplac provider.XplaClient) (e GovExternal) { // Submit a proposal along with an initial deposit. func (e GovExternal) SubmitProposal(submitProposalMsg types.SubmitProposalMsg) provider.XplaClient { - msg, err := MakeSubmitProposalMsg(submitProposalMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeSubmitProposalMsg(submitProposalMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -32,7 +32,7 @@ func (e GovExternal) SubmitProposal(submitProposalMsg types.SubmitProposalMsg) p // Deposit tokens for an active proposal. func (e GovExternal) GovDeposit(govDepositMsg types.GovDepositMsg) provider.XplaClient { - msg, err := MakeGovDepositMsg(govDepositMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeGovDepositMsg(govDepositMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -44,7 +44,7 @@ func (e GovExternal) GovDeposit(govDepositMsg types.GovDepositMsg) provider.Xpla // Vote for an active proposal, options: yes/no/no_with_veto/abstain. func (e GovExternal) Vote(voteMsg types.VoteMsg) provider.XplaClient { - msg, err := MakeVoteMsg(voteMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeVoteMsg(voteMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -56,7 +56,7 @@ func (e GovExternal) Vote(voteMsg types.VoteMsg) provider.XplaClient { // Vote for an active proposal, options: yes/no/no_with_veto/abstain. func (e GovExternal) WeightedVote(weightedVoteMsg types.WeightedVoteMsg) provider.XplaClient { - msg, err := MakeWeightedVoteMsg(weightedVoteMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeWeightedVoteMsg(weightedVoteMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -102,7 +102,7 @@ func (e GovExternal) QueryDeposit(queryDepositMsg types.QueryDepositMsg) provide } if queryDepositMsg.Depositor != "" { - msg, argsType, err := MakeQueryDepositMsg(queryDepositMsg, e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) + msg, argsType, err := MakeQueryDepositMsg(queryDepositMsg, e.Xplac.GetHttpMutex(), e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -116,7 +116,7 @@ func (e GovExternal) QueryDeposit(queryDepositMsg types.QueryDepositMsg) provide WithMsg(msg) } } else { - msg, argsType, err := MakeQueryDepositsMsg(queryDepositMsg, e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) + msg, argsType, err := MakeQueryDepositsMsg(queryDepositMsg, e.Xplac.GetHttpMutex(), e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -143,7 +143,7 @@ func (e GovExternal) QueryVote(queryVoteMsg types.QueryVoteMsg) provider.XplaCli } if queryVoteMsg.VoterAddr != "" { - msg, err := MakeQueryVoteMsg(queryVoteMsg, e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) + msg, err := MakeQueryVoteMsg(queryVoteMsg, e.Xplac.GetHttpMutex(), e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -152,7 +152,7 @@ func (e GovExternal) QueryVote(queryVoteMsg types.QueryVoteMsg) provider.XplaCli WithMsg(msg) } else { - msg, status, err := MakeQueryVotesMsg(queryVoteMsg, e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) + msg, status, err := MakeQueryVotesMsg(queryVoteMsg, e.Xplac.GetHttpMutex(), e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -178,7 +178,7 @@ func (e GovExternal) Tally(tallyMsg types.TallyMsg) provider.XplaClient { queryType = types.QueryLcd } - msg, err := MakeGovTallyMsg(tallyMsg, e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) + msg, err := MakeGovTallyMsg(tallyMsg, e.Xplac.GetHttpMutex(), e.Xplac.GetGrpcClient(), e.Xplac.GetContext(), e.Xplac.GetLcdURL(), queryType) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/gov/external_test.go b/core/gov/external_test.go index 0637f5c..5da0f37 100644 --- a/core/gov/external_test.go +++ b/core/gov/external_test.go @@ -23,7 +23,7 @@ func (s *IntegrationTestSuite) TestGovTx() { } s.xplac.SubmitProposal(submitProposalMsg) - makeSubmitProposalMsg, err := mgov.MakeSubmitProposalMsg(submitProposalMsg, s.xplac.GetPrivateKey()) + makeSubmitProposalMsg, err := mgov.MakeSubmitProposalMsg(submitProposalMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeSubmitProposalMsg, s.xplac.GetMsg()) @@ -44,7 +44,7 @@ func (s *IntegrationTestSuite) TestGovTx() { } s.xplac.GovDeposit(govDepositMsg) - makeGovDepositMsg, err := mgov.MakeGovDepositMsg(govDepositMsg, s.xplac.GetPrivateKey()) + makeGovDepositMsg, err := mgov.MakeGovDepositMsg(govDepositMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeGovDepositMsg, s.xplac.GetMsg()) @@ -65,7 +65,7 @@ func (s *IntegrationTestSuite) TestGovTx() { } s.xplac.Vote(voteMsg) - makeVoteMsg, err := mgov.MakeVoteMsg(voteMsg, s.xplac.GetPrivateKey()) + makeVoteMsg, err := mgov.MakeVoteMsg(voteMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeVoteMsg, s.xplac.GetMsg()) @@ -89,7 +89,7 @@ func (s *IntegrationTestSuite) TestGovTx() { } s.xplac.WeightedVote(weightedVoteMsg) - makeWeightedVoteMsg, err := mgov.MakeWeightedVoteMsg(weightedVoteMsg, s.xplac.GetPrivateKey()) + makeWeightedVoteMsg, err := mgov.MakeWeightedVoteMsg(weightedVoteMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeWeightedVoteMsg, s.xplac.GetMsg()) @@ -162,7 +162,7 @@ func (s *IntegrationTestSuite) TestGov() { } s.xplac.QueryDeposit(queryDepositMsg) - makeQueryDepositMsg, _, err := mgov.MakeQueryDepositMsg(queryDepositMsg, s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) + makeQueryDepositMsg, _, err := mgov.MakeQueryDepositMsg(queryDepositMsg, s.xplac.GetHttpMutex(), s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) s.Require().NoError(err) s.Require().Equal(makeQueryDepositMsg, s.xplac.GetMsg()) @@ -175,7 +175,7 @@ func (s *IntegrationTestSuite) TestGov() { } s.xplac.QueryDeposit(queryDepositMsg) - makeQueryDepositsMsg, _, err := mgov.MakeQueryDepositsMsg(queryDepositMsg, s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) + makeQueryDepositsMsg, _, err := mgov.MakeQueryDepositsMsg(queryDepositMsg, s.xplac.GetHttpMutex(), s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) s.Require().NoError(err) s.Require().Equal(makeQueryDepositsMsg, s.xplac.GetMsg()) @@ -189,7 +189,7 @@ func (s *IntegrationTestSuite) TestGov() { } s.xplac.QueryVote(queryVoteMsg) - makeQueryVoteMsg, err := mgov.MakeQueryVoteMsg(queryVoteMsg, s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) + makeQueryVoteMsg, err := mgov.MakeQueryVoteMsg(queryVoteMsg, s.xplac.GetHttpMutex(), s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) s.Require().NoError(err) s.Require().Equal(makeQueryVoteMsg, s.xplac.GetMsg()) @@ -202,7 +202,7 @@ func (s *IntegrationTestSuite) TestGov() { } s.xplac.QueryVote(queryVoteMsg) - makeQueryVotesMsg, _, err := mgov.MakeQueryVotesMsg(queryVoteMsg, s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) + makeQueryVotesMsg, _, err := mgov.MakeQueryVotesMsg(queryVoteMsg, s.xplac.GetHttpMutex(), s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) s.Require().NoError(err) s.Require().Equal(makeQueryVotesMsg, s.xplac.GetMsg()) @@ -215,7 +215,7 @@ func (s *IntegrationTestSuite) TestGov() { } s.xplac.Tally(tallyMsg) - makeGovTallyMsg, err := mgov.MakeGovTallyMsg(tallyMsg, s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) + makeGovTallyMsg, err := mgov.MakeGovTallyMsg(tallyMsg, s.xplac.GetHttpMutex(), s.xplac.GetGrpcClient(), s.xplac.GetContext(), s.xplac.GetLcdURL(), queryType) s.Require().NoError(err) s.Require().Equal(makeGovTallyMsg, s.xplac.GetMsg()) diff --git a/core/gov/module_test.go b/core/gov/module_test.go index 31c828c..8612470 100644 --- a/core/gov/module_test.go +++ b/core/gov/module_test.go @@ -32,7 +32,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Deposit: "1000", } - makeSubmitProposalMsg, err := gov.MakeSubmitProposalMsg(submitProposalMsg, s.xplac.GetPrivateKey()) + makeSubmitProposalMsg, err := gov.MakeSubmitProposalMsg(submitProposalMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeSubmitProposalMsg @@ -46,7 +46,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Deposit: "1000", } - makeGovDepositMsg, err := gov.MakeGovDepositMsg(govDepositMsg, s.xplac.GetPrivateKey()) + makeGovDepositMsg, err := gov.MakeGovDepositMsg(govDepositMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeGovDepositMsg @@ -60,7 +60,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Option: "yes", } - makeVoteMsg, err := gov.MakeVoteMsg(voteMsg, s.xplac.GetPrivateKey()) + makeVoteMsg, err := gov.MakeVoteMsg(voteMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeVoteMsg @@ -77,7 +77,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { NoWithVeto: "0.05", } - makeWeightedVoteMsg, err := gov.MakeWeightedVoteMsg(weightedVoteMsg, s.xplac.GetPrivateKey()) + makeWeightedVoteMsg, err := gov.MakeWeightedVoteMsg(weightedVoteMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeWeightedVoteMsg diff --git a/core/gov/msg.go b/core/gov/msg.go index 432b389..8ff98d2 100644 --- a/core/gov/msg.go +++ b/core/gov/msg.go @@ -2,34 +2,35 @@ package gov import ( "context" + "sync" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" + sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/gogo/protobuf/grpc" ) // (Tx) make msg - submit proposal -func MakeSubmitProposalMsg(submitProposalMsg types.SubmitProposalMsg, privKey key.PrivateKey) (govtypes.MsgSubmitProposal, error) { - return parseSubmitProposalArgs(submitProposalMsg, privKey) +func MakeSubmitProposalMsg(submitProposalMsg types.SubmitProposalMsg, proposer sdk.AccAddress) (govtypes.MsgSubmitProposal, error) { + return parseSubmitProposalArgs(submitProposalMsg, proposer) } // (Tx) make msg - deposit -func MakeGovDepositMsg(govDepositMsg types.GovDepositMsg, privKey key.PrivateKey) (govtypes.MsgDeposit, error) { - return parseGovDepositArgs(govDepositMsg, privKey) +func MakeGovDepositMsg(govDepositMsg types.GovDepositMsg, from sdk.AccAddress) (govtypes.MsgDeposit, error) { + return parseGovDepositArgs(govDepositMsg, from) } // (Tx) make msg - vote -func MakeVoteMsg(voteMsg types.VoteMsg, privKey key.PrivateKey) (govtypes.MsgVote, error) { - return parseVoteArgs(voteMsg, privKey) +func MakeVoteMsg(voteMsg types.VoteMsg, from sdk.AccAddress) (govtypes.MsgVote, error) { + return parseVoteArgs(voteMsg, from) } // (Tx) make msg - weighted vote -func MakeWeightedVoteMsg(weightedVoteMsg types.WeightedVoteMsg, privKey key.PrivateKey) (govtypes.MsgVoteWeighted, error) { - return parseWeightedVoteArgs(weightedVoteMsg, privKey) +func MakeWeightedVoteMsg(weightedVoteMsg types.WeightedVoteMsg, from sdk.AccAddress) (govtypes.MsgVoteWeighted, error) { + return parseWeightedVoteArgs(weightedVoteMsg, from) } // (Query) make msg - proposal @@ -49,18 +50,18 @@ func MakeQueryProposalsMsg(queryProposalsMsg types.QueryProposalsMsg) (govtypes. } // (Query) make msg - query deposit -func MakeQueryDepositMsg(queryDepositMsg types.QueryDepositMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { - return parseQueryDepositArgs(queryDepositMsg, grpcConn, ctx, lcdUrl, queryType) +func MakeQueryDepositMsg(queryDepositMsg types.QueryDepositMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { + return parseQueryDepositArgs(queryDepositMsg, httpMutex, grpcConn, ctx, lcdUrl, queryType) } // (Query) make msg - query deposits -func MakeQueryDepositsMsg(queryDepositMsg types.QueryDepositMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { - return parseQueryDepositsArgs(queryDepositMsg, grpcConn, ctx, lcdUrl, queryType) +func MakeQueryDepositsMsg(queryDepositMsg types.QueryDepositMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { + return parseQueryDepositsArgs(queryDepositMsg, httpMutex, grpcConn, ctx, lcdUrl, queryType) } // (Query) make msg - tally -func MakeGovTallyMsg(tallyMsg types.TallyMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, error) { - return parseGovTallyArgs(tallyMsg, grpcConn, ctx, lcdUrl, queryType) +func MakeGovTallyMsg(tallyMsg types.TallyMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, error) { + return parseGovTallyArgs(tallyMsg, httpMutex, grpcConn, ctx, lcdUrl, queryType) } // (Query) make msg - gov params @@ -69,11 +70,11 @@ func MakeGovParamsMsg(govParamsMsg types.GovParamsMsg) (govtypes.QueryParamsRequ } // (Query) make msg - query vote -func MakeQueryVoteMsg(queryVoteMsg types.QueryVoteMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (govtypes.QueryVoteRequest, error) { - return parseQueryVoteArgs(queryVoteMsg, grpcConn, ctx, lcdUrl, queryType) +func MakeQueryVoteMsg(queryVoteMsg types.QueryVoteMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (govtypes.QueryVoteRequest, error) { + return parseQueryVoteArgs(queryVoteMsg, httpMutex, grpcConn, ctx, lcdUrl, queryType) } // (Query) make msg - query votes -func MakeQueryVotesMsg(queryVoteMsg types.QueryVoteMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { - return parseQueryVotesArgs(queryVoteMsg, grpcConn, ctx, lcdUrl, queryType) +func MakeQueryVotesMsg(queryVoteMsg types.QueryVoteMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { + return parseQueryVotesArgs(queryVoteMsg, httpMutex, grpcConn, ctx, lcdUrl, queryType) } diff --git a/core/gov/msg_parse.go b/core/gov/msg_parse.go index 38c4f1a..1b5674c 100644 --- a/core/gov/msg_parse.go +++ b/core/gov/msg_parse.go @@ -2,9 +2,9 @@ package gov import ( "context" + "sync" "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -17,11 +17,7 @@ import ( ) // Parsing - submit proposal -func parseSubmitProposalArgs(submitProposalMsg types.SubmitProposalMsg, privKey key.PrivateKey) (govtypes.MsgSubmitProposal, error) { - proposer, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) - } +func parseSubmitProposalArgs(submitProposalMsg types.SubmitProposalMsg, proposer sdk.AccAddress) (govtypes.MsgSubmitProposal, error) { amount, err := sdk.ParseCoinsNormalized(util.DenomAdd(submitProposalMsg.Deposit)) if err != nil { return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) @@ -42,15 +38,12 @@ func parseSubmitProposalArgs(submitProposalMsg types.SubmitProposalMsg, privKey } // Parsing - deposit -func parseGovDepositArgs(govDepositMsg types.GovDepositMsg, privKey key.PrivateKey) (govtypes.MsgDeposit, error) { +func parseGovDepositArgs(govDepositMsg types.GovDepositMsg, from sdk.AccAddress) (govtypes.MsgDeposit, error) { proposalId, err := util.FromStringToUint64(govDepositMsg.ProposalID) if err != nil { return govtypes.MsgDeposit{}, util.LogErr(errors.ErrParse, err) } - from, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgDeposit{}, util.LogErr(errors.ErrParse, err) - } + amount, err := sdk.ParseCoinsNormalized(util.DenomAdd(govDepositMsg.Deposit)) if err != nil { return govtypes.MsgDeposit{}, util.LogErr(errors.ErrParse, err) @@ -62,15 +55,11 @@ func parseGovDepositArgs(govDepositMsg types.GovDepositMsg, privKey key.PrivateK } // Parsing - vote -func parseVoteArgs(voteMsg types.VoteMsg, privKey key.PrivateKey) (govtypes.MsgVote, error) { +func parseVoteArgs(voteMsg types.VoteMsg, from sdk.AccAddress) (govtypes.MsgVote, error) { proposalId, err := util.FromStringToUint64(voteMsg.ProposalID) if err != nil { return govtypes.MsgVote{}, util.LogErr(errors.ErrParse, err) } - from, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgVote{}, util.LogErr(errors.ErrParse, err) - } byteVoteOption, err := govtypes.VoteOptionFromString(govutils.NormalizeVoteOption(voteMsg.Option)) if err != nil { @@ -82,15 +71,11 @@ func parseVoteArgs(voteMsg types.VoteMsg, privKey key.PrivateKey) (govtypes.MsgV } // Parsing - weighted vote -func parseWeightedVoteArgs(weightedVoteMsg types.WeightedVoteMsg, privKey key.PrivateKey) (govtypes.MsgVoteWeighted, error) { +func parseWeightedVoteArgs(weightedVoteMsg types.WeightedVoteMsg, from sdk.AccAddress) (govtypes.MsgVoteWeighted, error) { proposalId, err := util.FromStringToUint64(weightedVoteMsg.ProposalID) if err != nil { return govtypes.MsgVoteWeighted{}, util.LogErr(errors.ErrParse, err) } - from, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgVoteWeighted{}, util.LogErr(errors.ErrParse, err) - } options := weightedVoteOptionConverting(weightedVoteMsg) @@ -142,7 +127,7 @@ func parseQueryProposalsArgs(queryProposalsMsg types.QueryProposalsMsg) (govtype } // Parsing - query deposit -func parseQueryDepositArgs(queryDepositMsg types.QueryDepositMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { +func parseQueryDepositArgs(queryDepositMsg types.QueryDepositMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { var propStatus govtypes.ProposalStatus proposalId, err := util.FromStringToUint64(queryDepositMsg.ProposalID) @@ -171,10 +156,13 @@ func parseQueryDepositArgs(queryDepositMsg types.QueryDepositMsg, grpcConn grpc. url := util.MakeQueryLcdUrl(govv1beta1.Query_ServiceDesc.Metadata.(string)) url = url + util.MakeQueryLabels("proposals", queryDepositMsg.ProposalID) + httpMutex.Lock() out, err := util.CtxHttpClient("GET", lcdUrl+url, nil, ctx) if err != nil { + httpMutex.Unlock() return nil, "", err } + httpMutex.Unlock() var response govtypes.QueryProposalResponse responseData := util.JsonUnmarshalData(response, out) @@ -195,7 +183,7 @@ func parseQueryDepositArgs(queryDepositMsg types.QueryDepositMsg, grpcConn grpc. } // Parsing - query deposits -func parseQueryDepositsArgs(queryDepositMsg types.QueryDepositMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { +func parseQueryDepositsArgs(queryDepositMsg types.QueryDepositMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { var propStatus govtypes.ProposalStatus proposalId, err := util.FromStringToUint64(queryDepositMsg.ProposalID) if err != nil { @@ -219,10 +207,13 @@ func parseQueryDepositsArgs(queryDepositMsg types.QueryDepositMsg, grpcConn grpc url := util.MakeQueryLcdUrl(govv1beta1.Query_ServiceDesc.Metadata.(string)) url = url + util.MakeQueryLabels("proposals", queryDepositMsg.ProposalID) + httpMutex.Lock() out, err := util.CtxHttpClient("GET", lcdUrl+url, nil, ctx) if err != nil { + httpMutex.Unlock() return nil, "", err } + httpMutex.Unlock() var response govtypes.QueryProposalResponse responseData := util.JsonUnmarshalData(response, out) @@ -243,7 +234,7 @@ func parseQueryDepositsArgs(queryDepositMsg types.QueryDepositMsg, grpcConn grpc } // Parsing - tally -func parseGovTallyArgs(tallyMsg types.TallyMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (govtypes.QueryTallyResultRequest, error) { +func parseGovTallyArgs(tallyMsg types.TallyMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (govtypes.QueryTallyResultRequest, error) { proposalId, err := util.FromStringToUint64(tallyMsg.ProposalID) if err != nil { return govtypes.QueryTallyResultRequest{}, util.LogErr(errors.ErrParse, err) @@ -264,10 +255,13 @@ func parseGovTallyArgs(tallyMsg types.TallyMsg, grpcConn grpc.ClientConn, ctx co url := util.MakeQueryLcdUrl(govv1beta1.Query_ServiceDesc.Metadata.(string)) url = url + util.MakeQueryLabels("proposals", tallyMsg.ProposalID) + httpMutex.Lock() _, err := util.CtxHttpClient("GET", lcdUrl+url, nil, ctx) if err != nil { + httpMutex.Unlock() return govtypes.QueryTallyResultRequest{}, err } + httpMutex.Unlock() } return govtypes.QueryTallyResultRequest{ @@ -289,7 +283,7 @@ func parseGovParamArgs(govParamsMsg types.GovParamsMsg) (govtypes.QueryParamsReq } // Parsing - query vote -func parseQueryVoteArgs(queryVoteMsg types.QueryVoteMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (govtypes.QueryVoteRequest, error) { +func parseQueryVoteArgs(queryVoteMsg types.QueryVoteMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (govtypes.QueryVoteRequest, error) { proposalId, err := util.FromStringToUint64(queryVoteMsg.ProposalID) if err != nil { return govtypes.QueryVoteRequest{}, util.LogErr(errors.ErrParse, err) @@ -310,10 +304,13 @@ func parseQueryVoteArgs(queryVoteMsg types.QueryVoteMsg, grpcConn grpc.ClientCon url := util.MakeQueryLcdUrl(govv1beta1.Query_ServiceDesc.Metadata.(string)) url = url + util.MakeQueryLabels("proposals", queryVoteMsg.ProposalID) + httpMutex.Lock() _, err := util.CtxHttpClient("GET", lcdUrl+url, nil, ctx) if err != nil { + httpMutex.Unlock() return govtypes.QueryVoteRequest{}, err } + httpMutex.Unlock() } return govtypes.QueryVoteRequest{ @@ -323,7 +320,7 @@ func parseQueryVoteArgs(queryVoteMsg types.QueryVoteMsg, grpcConn grpc.ClientCon } // Parsing - query votes -func parseQueryVotesArgs(queryVoteMsg types.QueryVoteMsg, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { +func parseQueryVotesArgs(queryVoteMsg types.QueryVoteMsg, httpMutex *sync.Mutex, grpcConn grpc.ClientConn, ctx context.Context, lcdUrl string, queryType int) (interface{}, string, error) { var propStatus govtypes.ProposalStatus proposalId, err := util.FromStringToUint64(queryVoteMsg.ProposalID) if err != nil { @@ -347,10 +344,13 @@ func parseQueryVotesArgs(queryVoteMsg types.QueryVoteMsg, grpcConn grpc.ClientCo url := util.MakeQueryLcdUrl(govv1beta1.Query_ServiceDesc.Metadata.(string)) url = url + util.MakeQueryLabels("proposals", queryVoteMsg.ProposalID) + httpMutex.Lock() out, err := util.CtxHttpClient("GET", lcdUrl+url, nil, ctx) if err != nil { + httpMutex.Unlock() return nil, "", err } + httpMutex.Unlock() var response govtypes.QueryProposalResponse responseData := util.JsonUnmarshalData(response, out) diff --git a/core/gov/query.go b/core/gov/query.go index 261b02c..b5654d9 100644 --- a/core/gov/query.go +++ b/core/gov/query.go @@ -418,10 +418,13 @@ func queryByLcdGov(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil diff --git a/core/ibc/query.go b/core/ibc/query.go index ba29c7c..75957d2 100644 --- a/core/ibc/query.go +++ b/core/ibc/query.go @@ -585,10 +585,13 @@ func queryByLcdIbc(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil diff --git a/core/mint/query.go b/core/mint/query.go index ccf2a37..8fb740b 100644 --- a/core/mint/query.go +++ b/core/mint/query.go @@ -99,10 +99,13 @@ func queryByLcdMint(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/params/external.go b/core/params/external.go index a48c7c9..b924db3 100644 --- a/core/params/external.go +++ b/core/params/external.go @@ -18,7 +18,7 @@ func NewParamsExternal(xplac provider.XplaClient) (e ParamsExternal) { // Submit a parameter change proposal. func (e ParamsExternal) ParamChange(paramChangeMsg types.ParamChangeMsg) provider.XplaClient { - msg, err := MakeProposalParamChangeMsg(paramChangeMsg, e.Xplac.GetPrivateKey(), e.Xplac.GetEncoding()) + msg, err := MakeProposalParamChangeMsg(paramChangeMsg, e.Xplac.GetFromAddress(), e.Xplac.GetEncoding()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/params/external_test.go b/core/params/external_test.go index 63de81f..7bc8c80 100644 --- a/core/params/external_test.go +++ b/core/params/external_test.go @@ -29,7 +29,7 @@ func (s *IntegrationTestSuite) TestParamsTx() { } s.xplac.ParamChange(paramChangeMsg) - makeProposalParamChangeMsg, err := mparams.MakeProposalParamChangeMsg(paramChangeMsg, s.xplac.GetPrivateKey(), s.xplac.GetEncoding()) + makeProposalParamChangeMsg, err := mparams.MakeProposalParamChangeMsg(paramChangeMsg, s.xplac.GetFromAddress(), s.xplac.GetEncoding()) s.Require().NoError(err) s.Require().Equal(makeProposalParamChangeMsg, s.xplac.GetMsg()) diff --git a/core/params/module_test.go b/core/params/module_test.go index b12985b..f7f903a 100644 --- a/core/params/module_test.go +++ b/core/params/module_test.go @@ -38,7 +38,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Deposit: "1000", } - makeProposalParamChangeMsg, err := params.MakeProposalParamChangeMsg(paramChangeMsg, s.xplac.GetPrivateKey(), s.xplac.GetEncoding()) + makeProposalParamChangeMsg, err := params.MakeProposalParamChangeMsg(paramChangeMsg, s.xplac.GetFromAddress(), s.xplac.GetEncoding()) s.Require().NoError(err) testMsg = makeProposalParamChangeMsg diff --git a/core/params/msg.go b/core/params/msg.go index 37abd0f..ec07647 100644 --- a/core/params/msg.go +++ b/core/params/msg.go @@ -1,17 +1,17 @@ package params import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" + sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" paramsproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" "github.com/xpladev/xpla/app/params" ) // (Tx) make msg - param change -func MakeProposalParamChangeMsg(paramChangeMsg types.ParamChangeMsg, privKey key.PrivateKey, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { - return parseProposalParamChangeArgs(paramChangeMsg, privKey, encodingConfig) +func MakeProposalParamChangeMsg(paramChangeMsg types.ParamChangeMsg, from sdk.AccAddress, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { + return parseProposalParamChangeArgs(paramChangeMsg, from, encodingConfig) } // (Query) make msg - subspace diff --git a/core/params/msg_parse.go b/core/params/msg_parse.go index efed861..d239102 100644 --- a/core/params/msg_parse.go +++ b/core/params/msg_parse.go @@ -1,7 +1,6 @@ package params import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -14,7 +13,7 @@ import ( ) // Parsing - param change -func parseProposalParamChangeArgs(paramChangeMsg types.ParamChangeMsg, privKey key.PrivateKey, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { +func parseProposalParamChangeArgs(paramChangeMsg types.ParamChangeMsg, from sdk.AccAddress, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) { var proposal paramscutils.ParamChangeProposalJSON var err error @@ -45,10 +44,6 @@ func parseProposalParamChangeArgs(paramChangeMsg types.ParamChangeMsg, privKey k return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) } - from, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) - } content := paramsproposal.NewParameterChangeProposal( proposal.Title, proposal.Description, proposal.Changes.ToParamChanges(), ) diff --git a/core/params/query.go b/core/params/query.go index c43c965..28420f1 100644 --- a/core/params/query.go +++ b/core/params/query.go @@ -76,10 +76,13 @@ func queryByLcdParams(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/reward/external.go b/core/reward/external.go index a99817f..f4ed568 100644 --- a/core/reward/external.go +++ b/core/reward/external.go @@ -18,7 +18,7 @@ func NewRewardExternal(xplac provider.XplaClient) (e RewardExternal) { // Funds the fee collector with the specified amount func (e RewardExternal) FundFeeCollector(fundFeeCollectorMsg types.FundFeeCollectorMsg) provider.XplaClient { - msg, err := MakeFundFeeCollectorMsg(fundFeeCollectorMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeFundFeeCollectorMsg(fundFeeCollectorMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/reward/external_test.go b/core/reward/external_test.go index 3502998..5d74354 100644 --- a/core/reward/external_test.go +++ b/core/reward/external_test.go @@ -21,7 +21,7 @@ func (s *IntegrationTestSuite) TestRewardTx() { } s.xplac.FundFeeCollector(fundFeeCollectorMsg) - makeFundFeeCollectorMsg, err := mreward.MakeFundFeeCollectorMsg(fundFeeCollectorMsg, s.xplac.GetPrivateKey()) + makeFundFeeCollectorMsg, err := mreward.MakeFundFeeCollectorMsg(fundFeeCollectorMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeFundFeeCollectorMsg, s.xplac.GetMsg()) diff --git a/core/reward/msg.go b/core/reward/msg.go index ab5e26f..017f145 100644 --- a/core/reward/msg.go +++ b/core/reward/msg.go @@ -1,15 +1,15 @@ package reward import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" + sdk "github.com/cosmos/cosmos-sdk/types" rewardtypes "github.com/xpladev/xpla/x/reward/types" ) // (Tx) make msg - Fund fee collector -func MakeFundFeeCollectorMsg(fundFeeCollectorMsg types.FundFeeCollectorMsg, privKey key.PrivateKey) (rewardtypes.MsgFundFeeCollector, error) { - return parseFundFeeCollectorArgs(fundFeeCollectorMsg, privKey) +func MakeFundFeeCollectorMsg(fundFeeCollectorMsg types.FundFeeCollectorMsg, from sdk.AccAddress) (rewardtypes.MsgFundFeeCollector, error) { + return parseFundFeeCollectorArgs(fundFeeCollectorMsg, from) } // (Query) make msg - query reward params diff --git a/core/reward/msg_parse.go b/core/reward/msg_parse.go index 6fc4a4a..1f36aa1 100644 --- a/core/reward/msg_parse.go +++ b/core/reward/msg_parse.go @@ -1,7 +1,6 @@ package reward import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -11,13 +10,8 @@ import ( ) // parsing - fund fee collector -func parseFundFeeCollectorArgs(fundFeeCollectorMsg types.FundFeeCollectorMsg, privKey key.PrivateKey) (rewardtypes.MsgFundFeeCollector, error) { - addrByPrivKey, err := key.Bech32AddrString(privKey) - if err != nil { - return rewardtypes.MsgFundFeeCollector{}, util.LogErr(errors.ErrParse, err) - } - - if fundFeeCollectorMsg.DepositorAddr != addrByPrivKey { +func parseFundFeeCollectorArgs(fundFeeCollectorMsg types.FundFeeCollectorMsg, from sdk.AccAddress) (rewardtypes.MsgFundFeeCollector, error) { + if fundFeeCollectorMsg.DepositorAddr != from.String() { return rewardtypes.MsgFundFeeCollector{}, util.LogErr(errors.ErrAccountNotMatch, "wrong depositor address, not match private key") } diff --git a/core/reward/query.go b/core/reward/query.go index d4c5de6..c9faf1e 100644 --- a/core/reward/query.go +++ b/core/reward/query.go @@ -82,10 +82,13 @@ func queryByLcdReward(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil diff --git a/core/slashing/external.go b/core/slashing/external.go index abb04ff..ff8bd2e 100644 --- a/core/slashing/external.go +++ b/core/slashing/external.go @@ -20,7 +20,7 @@ func NewSlashingExternal(xplac provider.XplaClient) (e SlashingExternal) { // Unjail validator previously jailed for downtime. func (e SlashingExternal) Unjail() provider.XplaClient { - msg, err := MakeUnjailMsg(e.Xplac.GetPrivateKey()) + msg, err := MakeUnjailMsg(e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/slashing/external_test.go b/core/slashing/external_test.go index 6904a17..6699f76 100644 --- a/core/slashing/external_test.go +++ b/core/slashing/external_test.go @@ -17,7 +17,7 @@ func (s *IntegrationTestSuite) TestSlashingTx() { // unjail s.xplac.Unjail() - makeUnjailMsg, err := mslashing.MakeUnjailMsg(s.xplac.GetPrivateKey()) + makeUnjailMsg, err := mslashing.MakeUnjailMsg(s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeUnjailMsg, s.xplac.GetMsg()) diff --git a/core/slashing/module_test.go b/core/slashing/module_test.go index 83726ec..e248717 100644 --- a/core/slashing/module_test.go +++ b/core/slashing/module_test.go @@ -26,7 +26,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { // unjail s.xplac.Unjail() - makeUnjailMsg, err := slashing.MakeUnjailMsg(s.xplac.GetPrivateKey()) + makeUnjailMsg, err := slashing.MakeUnjailMsg(s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeUnjailMsg diff --git a/core/slashing/msg.go b/core/slashing/msg.go index 4db2bf6..4914d9e 100644 --- a/core/slashing/msg.go +++ b/core/slashing/msg.go @@ -2,16 +2,16 @@ package slashing import ( "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" + sdk "github.com/cosmos/cosmos-sdk/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" "github.com/xpladev/xpla/app/params" ) // (Tx) make msg - unjail -func MakeUnjailMsg(privKey key.PrivateKey) (slashingtypes.MsgUnjail, error) { - return parseUnjailArgs(privKey) +func MakeUnjailMsg(addr sdk.AccAddress) (slashingtypes.MsgUnjail, error) { + return parseUnjailArgs(addr) } // (Query) make msg - slahsing params diff --git a/core/slashing/msg_parse.go b/core/slashing/msg_parse.go index d237dbd..2469fea 100644 --- a/core/slashing/msg_parse.go +++ b/core/slashing/msg_parse.go @@ -1,7 +1,6 @@ package slashing import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -13,12 +12,7 @@ import ( ) // Parsing - unjail -func parseUnjailArgs(privKey key.PrivateKey) (slashingtypes.MsgUnjail, error) { - addr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return slashingtypes.MsgUnjail{}, util.LogErr(errors.ErrParse, err) - } - +func parseUnjailArgs(addr sdk.AccAddress) (slashingtypes.MsgUnjail, error) { msg := slashingtypes.NewMsgUnjail(sdk.ValAddress(addr)) return *msg, nil diff --git a/core/slashing/query.go b/core/slashing/query.go index cecdb33..5888a74 100644 --- a/core/slashing/query.go +++ b/core/slashing/query.go @@ -99,10 +99,13 @@ func queryByLcdSlashing(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/staking/external.go b/core/staking/external.go index 8974913..f4aae0a 100644 --- a/core/staking/external.go +++ b/core/staking/external.go @@ -20,7 +20,7 @@ func NewStakingExternal(xplac provider.XplaClient) (e StakingExternal) { // Create new validator initialized with a self-delegation to it. func (e StakingExternal) CreateValidator(createValidatorMsg types.CreateValidatorMsg) provider.XplaClient { - msg, err := MakeCreateValidatorMsg(createValidatorMsg, e.Xplac.GetPrivateKey(), e.Xplac.GetOutputDocument()) + msg, err := MakeCreateValidatorMsg(createValidatorMsg, e.Xplac.GetFromAddress(), e.Xplac.GetOutputDocument()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -32,7 +32,7 @@ func (e StakingExternal) CreateValidator(createValidatorMsg types.CreateValidato // Edit an existing validator account. func (e StakingExternal) EditValidator(editValidatorMsg types.EditValidatorMsg) provider.XplaClient { - msg, err := MakeEditValidatorMsg(editValidatorMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeEditValidatorMsg(editValidatorMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -44,7 +44,7 @@ func (e StakingExternal) EditValidator(editValidatorMsg types.EditValidatorMsg) // Delegate liquid tokens to a validator. func (e StakingExternal) Delegate(delegateMsg types.DelegateMsg) provider.XplaClient { - msg, err := MakeDelegateMsg(delegateMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeDelegateMsg(delegateMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -56,7 +56,7 @@ func (e StakingExternal) Delegate(delegateMsg types.DelegateMsg) provider.XplaCl // Unbond shares from a validator. func (e StakingExternal) Unbond(unbondMsg types.UnbondMsg) provider.XplaClient { - msg, err := MakeUnbondMsg(unbondMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeUnbondMsg(unbondMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -68,7 +68,7 @@ func (e StakingExternal) Unbond(unbondMsg types.UnbondMsg) provider.XplaClient { // Redelegate illiquid tokens from one validator to another. func (e StakingExternal) Redelegate(redelegateMsg types.RedelegateMsg) provider.XplaClient { - msg, err := MakeRedelegateMsg(redelegateMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeRedelegateMsg(redelegateMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/staking/external_test.go b/core/staking/external_test.go index 2c2d20b..226f02f 100644 --- a/core/staking/external_test.go +++ b/core/staking/external_test.go @@ -29,7 +29,7 @@ func (s *IntegrationTestSuite) TestStakingTx() { } s.xplac.CreateValidator(createValidatorMsg) - makeCreateValidatorMsg, err := mstaking.MakeCreateValidatorMsg(createValidatorMsg, s.xplac.GetPrivateKey(), s.xplac.GetOutputDocument()) + makeCreateValidatorMsg, err := mstaking.MakeCreateValidatorMsg(createValidatorMsg, s.xplac.GetFromAddress(), s.xplac.GetOutputDocument()) s.Require().NoError(err) s.Require().Equal(makeCreateValidatorMsg, s.xplac.GetMsg()) @@ -51,7 +51,7 @@ func (s *IntegrationTestSuite) TestStakingTx() { } s.xplac.EditValidator(editValidatorMsg) - makeEditValidatorMsg, err := mstaking.MakeEditValidatorMsg(editValidatorMsg, s.xplac.GetPrivateKey()) + makeEditValidatorMsg, err := mstaking.MakeEditValidatorMsg(editValidatorMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeEditValidatorMsg, s.xplac.GetMsg()) @@ -72,7 +72,7 @@ func (s *IntegrationTestSuite) TestStakingTx() { } s.xplac.Delegate(delegateMsg) - makeDelegateMsg, err := mstaking.MakeDelegateMsg(delegateMsg, s.xplac.GetPrivateKey()) + makeDelegateMsg, err := mstaking.MakeDelegateMsg(delegateMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeDelegateMsg, s.xplac.GetMsg()) @@ -93,7 +93,7 @@ func (s *IntegrationTestSuite) TestStakingTx() { } s.xplac.Unbond(unbondMsg) - makeUnbondMsg, err := mstaking.MakeUnbondMsg(unbondMsg, s.xplac.GetPrivateKey()) + makeUnbondMsg, err := mstaking.MakeUnbondMsg(unbondMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeUnbondMsg, s.xplac.GetMsg()) @@ -115,7 +115,7 @@ func (s *IntegrationTestSuite) TestStakingTx() { } s.xplac.Redelegate(redelegateMsg) - makeRedelegateMsg, err := mstaking.MakeRedelegateMsg(redelegateMsg, s.xplac.GetPrivateKey()) + makeRedelegateMsg, err := mstaking.MakeRedelegateMsg(redelegateMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeRedelegateMsg, s.xplac.GetMsg()) diff --git a/core/staking/module_test.go b/core/staking/module_test.go index 1f5bc81..06313c6 100644 --- a/core/staking/module_test.go +++ b/core/staking/module_test.go @@ -43,7 +43,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { MinSelfDelegation: "", } - makeCreateValidatorMsg, err := staking.MakeCreateValidatorMsg(createValidatorMsg, s.xplac.GetPrivateKey(), s.xplac.GetOutputDocument()) + makeCreateValidatorMsg, err := staking.MakeCreateValidatorMsg(createValidatorMsg, s.xplac.GetFromAddress(), s.xplac.GetOutputDocument()) s.Require().NoError(err) testMsg = makeCreateValidatorMsg @@ -61,7 +61,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { MinSelfDelegation: "", } - makeEditValidatorMsg, err := staking.MakeEditValidatorMsg(editValidatorMsg, s.xplac.GetPrivateKey()) + makeEditValidatorMsg, err := staking.MakeEditValidatorMsg(editValidatorMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeEditValidatorMsg @@ -75,7 +75,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { ValAddr: sdk.ValAddress(accounts[0].Address).String(), } - makeDelegateMsg, err := staking.MakeDelegateMsg(delegateMsg, s.xplac.GetPrivateKey()) + makeDelegateMsg, err := staking.MakeDelegateMsg(delegateMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeDelegateMsg @@ -89,7 +89,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { ValAddr: sdk.ValAddress(accounts[0].Address).String(), } - makeUnbondMsg, err := staking.MakeUnbondMsg(unbondMsg, s.xplac.GetPrivateKey()) + makeUnbondMsg, err := staking.MakeUnbondMsg(unbondMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeUnbondMsg @@ -104,7 +104,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { ValDstAddr: sdk.ValAddress(accounts[1].Address).String(), } - makeRedelegateMsg, err := staking.MakeRedelegateMsg(redelegateMsg, s.xplac.GetPrivateKey()) + makeRedelegateMsg, err := staking.MakeRedelegateMsg(redelegateMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeRedelegateMsg diff --git a/core/staking/msg.go b/core/staking/msg.go index 30b723b..5cbd1e8 100644 --- a/core/staking/msg.go +++ b/core/staking/msg.go @@ -4,33 +4,32 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" ) // (Tx) make msg - create validator -func MakeCreateValidatorMsg(createValidatorMsg types.CreateValidatorMsg, privKey key.PrivateKey, output string) (sdk.Msg, error) { - return parseCreateValidatorArgs(createValidatorMsg, privKey, output) +func MakeCreateValidatorMsg(createValidatorMsg types.CreateValidatorMsg, from sdk.AccAddress, output string) (sdk.Msg, error) { + return parseCreateValidatorArgs(createValidatorMsg, from, output) } // (Tx) make msg - edit validator -func MakeEditValidatorMsg(editValidatorMsg types.EditValidatorMsg, privKey key.PrivateKey) (stakingtypes.MsgEditValidator, error) { - return parseEditValidatorArgs(editValidatorMsg, privKey) +func MakeEditValidatorMsg(editValidatorMsg types.EditValidatorMsg, addr sdk.AccAddress) (stakingtypes.MsgEditValidator, error) { + return parseEditValidatorArgs(editValidatorMsg, addr) } // (Tx) make msg - delegate -func MakeDelegateMsg(delegateMsg types.DelegateMsg, privKey key.PrivateKey) (stakingtypes.MsgDelegate, error) { - return parseDelegateArgs(delegateMsg, privKey) +func MakeDelegateMsg(delegateMsg types.DelegateMsg, delAddr sdk.AccAddress) (stakingtypes.MsgDelegate, error) { + return parseDelegateArgs(delegateMsg, delAddr) } // (Tx) make msg - unbond -func MakeUnbondMsg(unbondMsg types.UnbondMsg, privKey key.PrivateKey) (stakingtypes.MsgUndelegate, error) { - return parseUnbondArgs(unbondMsg, privKey) +func MakeUnbondMsg(unbondMsg types.UnbondMsg, delAddr sdk.AccAddress) (stakingtypes.MsgUndelegate, error) { + return parseUnbondArgs(unbondMsg, delAddr) } // (Tx) make msg - redelegate -func MakeRedelegateMsg(redelegateMsg types.RedelegateMsg, privKey key.PrivateKey) (stakingtypes.MsgBeginRedelegate, error) { - return parseRedelegateArgs(redelegateMsg, privKey) +func MakeRedelegateMsg(redelegateMsg types.RedelegateMsg, delAddr sdk.AccAddress) (stakingtypes.MsgBeginRedelegate, error) { + return parseRedelegateArgs(redelegateMsg, delAddr) } // (Query) make msg - validator diff --git a/core/staking/msg_parse.go b/core/staking/msg_parse.go index 52f707d..639c386 100644 --- a/core/staking/msg_parse.go +++ b/core/staking/msg_parse.go @@ -5,7 +5,6 @@ import ( "fmt" "net" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -24,7 +23,7 @@ import ( // Parsing - create validator func parseCreateValidatorArgs( createValidatorMsg types.CreateValidatorMsg, - privKey key.PrivateKey, + from sdk.AccAddress, output string, ) (sdk.Msg, error) { @@ -32,12 +31,7 @@ func parseCreateValidatorArgs( var valPubKey cryptotypes.PubKey var err error - privKeyAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return nil, util.LogErr(errors.ErrParse, err) - } - - privKeyValAddr := sdk.ValAddress(privKeyAddr) + privKeyValAddr := sdk.ValAddress(from) addrStr := createValidatorMsg.ValidatorAddress addr, err := sdk.ValAddressFromBech32(addrStr) @@ -139,7 +133,7 @@ func parseCreateValidatorArgs( } // Parsing - edit validator -func parseEditValidatorArgs(editValidatorMsg types.EditValidatorMsg, privKey key.PrivateKey) (stakingtypes.MsgEditValidator, error) { +func parseEditValidatorArgs(editValidatorMsg types.EditValidatorMsg, addr sdk.AccAddress) (stakingtypes.MsgEditValidator, error) { moniker := editValidatorMsg.Moniker identity := editValidatorMsg.Identity website := editValidatorMsg.Website @@ -169,26 +163,17 @@ func parseEditValidatorArgs(editValidatorMsg types.EditValidatorMsg, privKey key newMinSelfDelegation = &msb } - addr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return stakingtypes.MsgEditValidator{}, util.LogErr(errors.ErrParse, err) - } - msg := stakingtypes.NewMsgEditValidator(sdk.ValAddress(addr), description, newRate, newMinSelfDelegation) return *msg, nil } // Parsing - delegate -func parseDelegateArgs(delegateMsg types.DelegateMsg, privKey key.PrivateKey) (stakingtypes.MsgDelegate, error) { +func parseDelegateArgs(delegateMsg types.DelegateMsg, delAddr sdk.AccAddress) (stakingtypes.MsgDelegate, error) { amount, err := sdk.ParseCoinNormalized(util.DenomAdd(delegateMsg.Amount)) if err != nil { return stakingtypes.MsgDelegate{}, util.LogErr(errors.ErrParse, err) } - delAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return stakingtypes.MsgDelegate{}, util.LogErr(errors.ErrParse, err) - } valAddr, err := sdk.ValAddressFromBech32(delegateMsg.ValAddr) if err != nil { @@ -201,15 +186,11 @@ func parseDelegateArgs(delegateMsg types.DelegateMsg, privKey key.PrivateKey) (s } // Parsing - unbond -func parseUnbondArgs(unbondMsg types.UnbondMsg, privKey key.PrivateKey) (stakingtypes.MsgUndelegate, error) { +func parseUnbondArgs(unbondMsg types.UnbondMsg, delAddr sdk.AccAddress) (stakingtypes.MsgUndelegate, error) { amount, err := sdk.ParseCoinNormalized(util.DenomAdd(unbondMsg.Amount)) if err != nil { return stakingtypes.MsgUndelegate{}, util.LogErr(errors.ErrParse, err) } - delAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return stakingtypes.MsgUndelegate{}, util.LogErr(errors.ErrParse, err) - } valAddr, err := sdk.ValAddressFromBech32(unbondMsg.ValAddr) if err != nil { @@ -222,15 +203,11 @@ func parseUnbondArgs(unbondMsg types.UnbondMsg, privKey key.PrivateKey) (staking } // Parsing - redelegate -func parseRedelegateArgs(redelegateMsg types.RedelegateMsg, privKey key.PrivateKey) (stakingtypes.MsgBeginRedelegate, error) { +func parseRedelegateArgs(redelegateMsg types.RedelegateMsg, delAddr sdk.AccAddress) (stakingtypes.MsgBeginRedelegate, error) { amount, err := sdk.ParseCoinNormalized(util.DenomAdd(redelegateMsg.Amount)) if err != nil { return stakingtypes.MsgBeginRedelegate{}, util.LogErr(errors.ErrParse, err) } - delAddr, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return stakingtypes.MsgBeginRedelegate{}, util.LogErr(errors.ErrParse, err) - } valSrcAddr, err := sdk.ValAddressFromBech32(redelegateMsg.ValSrcAddr) if err != nil { diff --git a/core/staking/query.go b/core/staking/query.go index 3096a42..7cf1313 100644 --- a/core/staking/query.go +++ b/core/staking/query.go @@ -266,10 +266,13 @@ func queryByLcdStaking(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/upgrade/external.go b/core/upgrade/external.go index cff1276..002c871 100644 --- a/core/upgrade/external.go +++ b/core/upgrade/external.go @@ -20,7 +20,7 @@ func NewUpgradeExternal(xplac provider.XplaClient) (e UpgradeExternal) { // Submit a software upgrade proposal. func (e UpgradeExternal) SoftwareUpgrade(softwareUpgradeMsg types.SoftwareUpgradeMsg) provider.XplaClient { - msg, err := MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -32,7 +32,7 @@ func (e UpgradeExternal) SoftwareUpgrade(softwareUpgradeMsg types.SoftwareUpgrad // Cancel the current software upgrade proposal. func (e UpgradeExternal) CancelSoftwareUpgrade(cancelSoftwareUpgradeMsg types.CancelSoftwareUpgradeMsg) provider.XplaClient { - msg, err := MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/upgrade/external_test.go b/core/upgrade/external_test.go index c2596aa..8f49fc7 100644 --- a/core/upgrade/external_test.go +++ b/core/upgrade/external_test.go @@ -25,7 +25,7 @@ func (s *IntegrationTestSuite) TestUpgradeTx() { } s.xplac.SoftwareUpgrade(softwareUpgradeMsg) - makeProposalSoftwareUpgradeMsg, err := mupgrade.MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg, s.xplac.GetPrivateKey()) + makeProposalSoftwareUpgradeMsg, err := mupgrade.MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeProposalSoftwareUpgradeMsg, s.xplac.GetMsg()) @@ -47,7 +47,7 @@ func (s *IntegrationTestSuite) TestUpgradeTx() { } s.xplac.CancelSoftwareUpgrade(cancelSoftwareUpgradeMsg) - makeCancelSoftwareUpgradeMsg, err := mupgrade.MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg, s.xplac.GetPrivateKey()) + makeCancelSoftwareUpgradeMsg, err := mupgrade.MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeCancelSoftwareUpgradeMsg, s.xplac.GetMsg()) diff --git a/core/upgrade/module_test.go b/core/upgrade/module_test.go index 874a365..bfe785b 100644 --- a/core/upgrade/module_test.go +++ b/core/upgrade/module_test.go @@ -34,7 +34,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Deposit: "1000", } - makeProposalSoftwareUpgradeMsg, err := upgrade.MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg, s.xplac.GetPrivateKey()) + makeProposalSoftwareUpgradeMsg, err := upgrade.MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeProposalSoftwareUpgradeMsg @@ -49,7 +49,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { Deposit: "1000", } - makeCancelSoftwareUpgradeMsg, err := upgrade.MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg, s.xplac.GetPrivateKey()) + makeCancelSoftwareUpgradeMsg, err := upgrade.MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeCancelSoftwareUpgradeMsg diff --git a/core/upgrade/msg.go b/core/upgrade/msg.go index 7058262..472112f 100644 --- a/core/upgrade/msg.go +++ b/core/upgrade/msg.go @@ -1,21 +1,21 @@ package upgrade import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" + sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ) // (Tx) make msg - software upgrade -func MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg types.SoftwareUpgradeMsg, privKey key.PrivateKey) (govtypes.MsgSubmitProposal, error) { - return parseProposalSoftwareUpgradeArgs(softwareUpgradeMsg, privKey) +func MakeProposalSoftwareUpgradeMsg(softwareUpgradeMsg types.SoftwareUpgradeMsg, from sdk.AccAddress) (govtypes.MsgSubmitProposal, error) { + return parseProposalSoftwareUpgradeArgs(softwareUpgradeMsg, from) } // (Tx) make msg - cancel software upgrade -func MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg types.CancelSoftwareUpgradeMsg, privKey key.PrivateKey) (govtypes.MsgSubmitProposal, error) { - return parseCancelSoftwareUpgradeArgs(cancelSoftwareUpgradeMsg, privKey) +func MakeCancelSoftwareUpgradeMsg(cancelSoftwareUpgradeMsg types.CancelSoftwareUpgradeMsg, from sdk.AccAddress) (govtypes.MsgSubmitProposal, error) { + return parseCancelSoftwareUpgradeArgs(cancelSoftwareUpgradeMsg, from) } // (Query) make msg - applied diff --git a/core/upgrade/msg_parse.go b/core/upgrade/msg_parse.go index 0a91062..8751610 100644 --- a/core/upgrade/msg_parse.go +++ b/core/upgrade/msg_parse.go @@ -1,7 +1,6 @@ package upgrade import ( - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -12,7 +11,7 @@ import ( ) // Parsing - software upgrade -func parseProposalSoftwareUpgradeArgs(softwareUpgradeMsg types.SoftwareUpgradeMsg, privKey key.PrivateKey) (govtypes.MsgSubmitProposal, error) { +func parseProposalSoftwareUpgradeArgs(softwareUpgradeMsg types.SoftwareUpgradeMsg, from sdk.AccAddress) (govtypes.MsgSubmitProposal, error) { heightI64, err := util.FromStringToInt64(softwareUpgradeMsg.UpgradeHeight) if err != nil { return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) @@ -27,10 +26,6 @@ func parseProposalSoftwareUpgradeArgs(softwareUpgradeMsg types.SoftwareUpgradeMs softwareUpgradeMsg.Description, plan, ) - from, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) - } deposit, err := sdk.ParseCoinsNormalized(util.DenomAdd(softwareUpgradeMsg.Deposit)) if err != nil { @@ -46,12 +41,7 @@ func parseProposalSoftwareUpgradeArgs(softwareUpgradeMsg types.SoftwareUpgradeMs } // Parsing - cancel software upgrade -func parseCancelSoftwareUpgradeArgs(cancelSoftwareUpgradeMsg types.CancelSoftwareUpgradeMsg, privKey key.PrivateKey) (govtypes.MsgSubmitProposal, error) { - from, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) - } - +func parseCancelSoftwareUpgradeArgs(cancelSoftwareUpgradeMsg types.CancelSoftwareUpgradeMsg, from sdk.AccAddress) (govtypes.MsgSubmitProposal, error) { deposit, err := sdk.ParseCoinsNormalized(util.DenomAdd(cancelSoftwareUpgradeMsg.Deposit)) if err != nil { return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err) diff --git a/core/upgrade/query.go b/core/upgrade/query.go index c74195e..ccfea7f 100644 --- a/core/upgrade/query.go +++ b/core/upgrade/query.go @@ -117,10 +117,13 @@ func queryByLcdUpgrade(i core.QueryClient) (string, error) { } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil } diff --git a/core/wasm/external.go b/core/wasm/external.go index da7b142..125391e 100644 --- a/core/wasm/external.go +++ b/core/wasm/external.go @@ -3,7 +3,6 @@ package wasm import ( "github.com/xpladev/xpla.go/provider" "github.com/xpladev/xpla.go/types" - "github.com/xpladev/xpla.go/util" ) type WasmExternal struct { @@ -19,11 +18,7 @@ func NewWasmExternal(xplac provider.XplaClient) (e WasmExternal) { // Upload a wasm binary. func (e WasmExternal) StoreCode(storeMsg types.StoreMsg) provider.XplaClient { - addr, err := util.GetAddrByPrivKey(e.Xplac.GetPrivateKey()) - if err != nil { - return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) - } - msg, err := MakeStoreCodeMsg(storeMsg, addr) + msg, err := MakeStoreCodeMsg(storeMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -35,11 +30,7 @@ func (e WasmExternal) StoreCode(storeMsg types.StoreMsg) provider.XplaClient { // Instantiate a wasm contract. func (e WasmExternal) InstantiateContract(instantiageMsg types.InstantiateMsg) provider.XplaClient { - addr, err := util.GetAddrByPrivKey(e.Xplac.GetPrivateKey()) - if err != nil { - return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) - } - msg, err := MakeInstantiateMsg(instantiageMsg, addr) + msg, err := MakeInstantiateMsg(instantiageMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -51,11 +42,7 @@ func (e WasmExternal) InstantiateContract(instantiageMsg types.InstantiateMsg) p // Execute a wasm contract. func (e WasmExternal) ExecuteContract(executeMsg types.ExecuteMsg) provider.XplaClient { - addr, err := util.GetAddrByPrivKey(e.Xplac.GetPrivateKey()) - if err != nil { - return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) - } - msg, err := MakeExecuteMsg(executeMsg, addr) + msg, err := MakeExecuteMsg(executeMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -67,7 +54,7 @@ func (e WasmExternal) ExecuteContract(executeMsg types.ExecuteMsg) provider.Xpla // Clears admin for a contract to prevent further migrations. func (e WasmExternal) ClearContractAdmin(clearContractAdminMsg types.ClearContractAdminMsg) provider.XplaClient { - msg, err := MakeClearContractAdminMsg(clearContractAdminMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeClearContractAdminMsg(clearContractAdminMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -79,7 +66,7 @@ func (e WasmExternal) ClearContractAdmin(clearContractAdminMsg types.ClearContra // Set new admin for a contract. func (e WasmExternal) SetContractAdmin(setContractAdminMsg types.SetContractAdminMsg) provider.XplaClient { - msg, err := MakeSetContractAdmintMsg(setContractAdminMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeSetContractAdmintMsg(setContractAdminMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } @@ -91,7 +78,7 @@ func (e WasmExternal) SetContractAdmin(setContractAdminMsg types.SetContractAdmi // Migrate a wasm contract to a new code version. func (e WasmExternal) Migrate(migrateMsg types.MigrateMsg) provider.XplaClient { - msg, err := MakeMigrateMsg(migrateMsg, e.Xplac.GetPrivateKey()) + msg, err := MakeMigrateMsg(migrateMsg, e.Xplac.GetFromAddress()) if err != nil { return provider.ResetModuleAndMsgXplac(e.Xplac).WithErr(err) } diff --git a/core/wasm/external_test.go b/core/wasm/external_test.go index 938079d..7a28ad5 100644 --- a/core/wasm/external_test.go +++ b/core/wasm/external_test.go @@ -81,7 +81,7 @@ func (s *IntegrationTestSuite) TestWasmTx() { } s.xplac.ClearContractAdmin(clearContractAdminMsg) - makeClearContractAdminMsg, err := mwasm.MakeClearContractAdminMsg(clearContractAdminMsg, s.xplac.GetPrivateKey()) + makeClearContractAdminMsg, err := mwasm.MakeClearContractAdminMsg(clearContractAdminMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeClearContractAdminMsg, s.xplac.GetMsg()) @@ -101,7 +101,7 @@ func (s *IntegrationTestSuite) TestWasmTx() { } s.xplac.SetContractAdmin(setContractAdminMsg) - makeSetContractAdmintMsg, err := mwasm.MakeSetContractAdmintMsg(setContractAdminMsg, s.xplac.GetPrivateKey()) + makeSetContractAdmintMsg, err := mwasm.MakeSetContractAdmintMsg(setContractAdminMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeSetContractAdmintMsg, s.xplac.GetMsg()) @@ -123,7 +123,7 @@ func (s *IntegrationTestSuite) TestWasmTx() { } s.xplac.Migrate(migrateMsg) - makeMigrateMsg, err := mwasm.MakeMigrateMsg(migrateMsg, s.xplac.GetPrivateKey()) + makeMigrateMsg, err := mwasm.MakeMigrateMsg(migrateMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) s.Require().Equal(makeMigrateMsg, s.xplac.GetMsg()) diff --git a/core/wasm/module_test.go b/core/wasm/module_test.go index 6ff94c5..166bddb 100644 --- a/core/wasm/module_test.go +++ b/core/wasm/module_test.go @@ -76,7 +76,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { ContractAddress: testCWContractAddress, } - makeClearContractAdminMsg, err := wasm.MakeClearContractAdminMsg(clearContractAdminMsg, s.xplac.GetPrivateKey()) + makeClearContractAdminMsg, err := wasm.MakeClearContractAdminMsg(clearContractAdminMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeClearContractAdminMsg @@ -89,7 +89,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { ContractAddress: testCWContractAddress, } - makeSetContractAdmintMsg, err := wasm.MakeSetContractAdmintMsg(setContractAdminMsg, s.xplac.GetPrivateKey()) + makeSetContractAdmintMsg, err := wasm.MakeSetContractAdmintMsg(setContractAdminMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeSetContractAdmintMsg @@ -104,7 +104,7 @@ func (s *IntegrationTestSuite) TestCoreModule() { MigrateMsg: `{}`, } - makeMigrateMsg, err := wasm.MakeMigrateMsg(migrateMsg, s.xplac.GetPrivateKey()) + makeMigrateMsg, err := wasm.MakeMigrateMsg(migrateMsg, s.xplac.GetFromAddress()) s.Require().NoError(err) testMsg = makeMigrateMsg diff --git a/core/wasm/msg.go b/core/wasm/msg.go index 59dc833..85e8e16 100644 --- a/core/wasm/msg.go +++ b/core/wasm/msg.go @@ -7,7 +7,6 @@ import ( wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/xpladev/xpla.go/core" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -71,18 +70,18 @@ func MakeExecuteMsg(executeMsg types.ExecuteMsg, addr sdk.AccAddress) (wasmtypes } // (Tx) make msg - clear contract admin -func MakeClearContractAdminMsg(clearContractAdminMsg types.ClearContractAdminMsg, privKey key.PrivateKey) (wasmtypes.MsgClearAdmin, error) { - return parseClearContractAdminArgs(clearContractAdminMsg, privKey) +func MakeClearContractAdminMsg(clearContractAdminMsg types.ClearContractAdminMsg, sender sdk.AccAddress) (wasmtypes.MsgClearAdmin, error) { + return parseClearContractAdminArgs(clearContractAdminMsg, sender) } // (Tx) make msg - set contract admin -func MakeSetContractAdmintMsg(setContractAdminMsg types.SetContractAdminMsg, privKey key.PrivateKey) (wasmtypes.MsgUpdateAdmin, error) { - return parseSetContractAdmintArgs(setContractAdminMsg, privKey) +func MakeSetContractAdmintMsg(setContractAdminMsg types.SetContractAdminMsg, sender sdk.AccAddress) (wasmtypes.MsgUpdateAdmin, error) { + return parseSetContractAdmintArgs(setContractAdminMsg, sender) } // (Tx) make msg - migrate -func MakeMigrateMsg(migrateMsg types.MigrateMsg, privKey key.PrivateKey) (wasmtypes.MsgMigrateContract, error) { - return parseMigrateArgs(migrateMsg, privKey) +func MakeMigrateMsg(migrateMsg types.MigrateMsg, sender sdk.AccAddress) (wasmtypes.MsgMigrateContract, error) { + return parseMigrateArgs(migrateMsg, sender) } // (Query) make msg - query contract diff --git a/core/wasm/msg_parse.go b/core/wasm/msg_parse.go index f248bc7..e53c388 100644 --- a/core/wasm/msg_parse.go +++ b/core/wasm/msg_parse.go @@ -5,7 +5,6 @@ import ( "strconv" "strings" - "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" "github.com/xpladev/xpla.go/types/errors" "github.com/xpladev/xpla.go/util" @@ -186,12 +185,7 @@ func parseExecuteArgs(executeMsgData types.ExecuteMsg, } // Parsing - clear contract admin -func parseClearContractAdminArgs(clearContractAdminMsg types.ClearContractAdminMsg, privKey key.PrivateKey) (wasmtypes.MsgClearAdmin, error) { - sender, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return wasmtypes.MsgClearAdmin{}, util.LogErr(errors.ErrParse, err) - } - +func parseClearContractAdminArgs(clearContractAdminMsg types.ClearContractAdminMsg, sender sdk.AccAddress) (wasmtypes.MsgClearAdmin, error) { return wasmtypes.MsgClearAdmin{ Sender: sender.String(), Contract: clearContractAdminMsg.ContractAddress, @@ -199,12 +193,7 @@ func parseClearContractAdminArgs(clearContractAdminMsg types.ClearContractAdminM } // Parsing - set contract admin -func parseSetContractAdmintArgs(setContractAdminMsg types.SetContractAdminMsg, privKey key.PrivateKey) (wasmtypes.MsgUpdateAdmin, error) { - sender, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return wasmtypes.MsgUpdateAdmin{}, util.LogErr(errors.ErrParse, err) - } - +func parseSetContractAdmintArgs(setContractAdminMsg types.SetContractAdminMsg, sender sdk.AccAddress) (wasmtypes.MsgUpdateAdmin, error) { return wasmtypes.MsgUpdateAdmin{ Sender: sender.String(), Contract: setContractAdminMsg.ContractAddress, @@ -213,12 +202,7 @@ func parseSetContractAdmintArgs(setContractAdminMsg types.SetContractAdminMsg, p } // Parsing - migrate -func parseMigrateArgs(migrateMsg types.MigrateMsg, privKey key.PrivateKey) (wasmtypes.MsgMigrateContract, error) { - sender, err := util.GetAddrByPrivKey(privKey) - if err != nil { - return wasmtypes.MsgMigrateContract{}, util.LogErr(errors.ErrParse, err) - } - +func parseMigrateArgs(migrateMsg types.MigrateMsg, sender sdk.AccAddress) (wasmtypes.MsgMigrateContract, error) { codeIdU64, err := util.FromStringToUint64(migrateMsg.CodeId) if err != nil { return wasmtypes.MsgMigrateContract{}, util.LogErr(errors.ErrParse, err) diff --git a/core/wasm/query.go b/core/wasm/query.go index ca6a985..9dfa15f 100644 --- a/core/wasm/query.go +++ b/core/wasm/query.go @@ -226,10 +226,13 @@ func queryByLcdWasm(i core.QueryClient) (string, error) { return "", util.LogErr(errors.ErrInvalidMsgType, i.Ixplac.GetMsgType()) } + i.Ixplac.GetHttpMutex().Lock() out, err := util.CtxHttpClient("GET", i.Ixplac.GetLcdURL()+url, nil, i.Ixplac.GetContext()) if err != nil { + i.Ixplac.GetHttpMutex().Unlock() return "", err } + i.Ixplac.GetHttpMutex().Unlock() return string(out), nil diff --git a/go.mod b/go.mod index ec29303..d46b769 100644 --- a/go.mod +++ b/go.mod @@ -17,8 +17,8 @@ require ( github.com/tendermint/tendermint v0.34.21 github.com/tendermint/tm-db v0.6.7 github.com/xpladev/xpla v1.2.3 - golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa - golang.org/x/net v0.2.0 + golang.org/x/crypto v0.14.0 + golang.org/x/net v0.17.0 google.golang.org/grpc v1.51.0 ) @@ -131,6 +131,7 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/rjeczalik/notify v0.9.2 // indirect + github.com/rogpeppe/go-internal v1.6.2 // indirect github.com/rs/cors v1.8.2 // indirect github.com/rs/zerolog v1.27.0 // indirect github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa // indirect @@ -154,9 +155,9 @@ require ( go.etcd.io/bbolt v1.3.6 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect - golang.org/x/sys v0.2.0 // indirect - golang.org/x/term v0.2.0 // indirect - golang.org/x/text v0.4.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/term v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/ini.v1 v1.66.6 // indirect diff --git a/go.sum b/go.sum index f40656c..23a02bc 100644 --- a/go.sum +++ b/go.sum @@ -746,7 +746,8 @@ github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/rogpeppe/go-internal v1.6.2 h1:aIihoIOHCiLZHxyoNQ+ABL4NKhFTgKLBdMLyEAh98m0= +github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= @@ -915,8 +916,8 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1003,8 +1004,8 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1104,12 +1105,12 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0 h1:z85xZCsEl7bi/KwbNADeBYoOP0++7W1ipu+aGnpwzRM= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1118,8 +1119,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/provider/provider.go b/provider/provider.go index 2c7937e..13f5525 100644 --- a/provider/provider.go +++ b/provider/provider.go @@ -2,6 +2,7 @@ package provider import ( "context" + "sync" "github.com/xpladev/xpla.go/key" "github.com/xpladev/xpla.go/types" @@ -77,6 +78,7 @@ type Options struct { EvmRpcURL string Pagination types.Pagination OutputDocument string + FromAddress sdk.AccAddress } // Methods set params of client.xplaClient. @@ -103,10 +105,11 @@ type WithProvider interface { WithEvmRpc(string) XplaClient WithPagination(types.Pagination) XplaClient WithOutputDocument(string) XplaClient - WithModule(module string) XplaClient - WithMsgType(msgType string) XplaClient - WithMsg(msg interface{}) XplaClient - WithErr(err error) XplaClient + WithFromAddress(sdk.AccAddress) XplaClient + WithModule(string) XplaClient + WithMsgType(string) XplaClient + WithMsg(interface{}) XplaClient + WithErr(error) XplaClient } // Methods get params of client.xplaClient. @@ -132,6 +135,8 @@ type GetProvider interface { GetTimeoutHeight() string GetPagination() *query.PageRequest GetOutputDocument() string + GetFromAddress() sdk.AccAddress + GetHttpMutex() *sync.Mutex GetModule() string GetMsg() interface{} GetMsgType() string