diff --git a/relayer/go.mod b/relayer/go.mod index 77ae643..2f3c5f7 100644 --- a/relayer/go.mod +++ b/relayer/go.mod @@ -151,4 +151,4 @@ require ( ) // original author is not maintaining the repo anymore -replace github.com/fbsobreira/gotron-sdk => github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.4 +replace github.com/fbsobreira/gotron-sdk => ./gotron-sdk diff --git a/relayer/go.sum b/relayer/go.sum index 55eb153..ea2467e 100644 --- a/relayer/go.sum +++ b/relayer/go.sum @@ -411,8 +411,6 @@ github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgn github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250718143957-41236f9ef8b4 h1:hPKEslzkVA2HUuqwGc6w594EWYnJFp5jXmAoBu3VryE= github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250718143957-41236f9ef8b4/go.mod h1:U1UAbPhy6D7Qz0wHKGPoQO+dpR0hsYjgUz8xwRrmKwI= -github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.4 h1:J4qtAo0ZmgX5pIr8Y5mdC+J2rj2e/6CTUC263t6mGOM= -github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.4/go.mod h1:4WhGgCA0smBbBud5mK+jnDb2wwndMvoqaWBJ3OV/7Bw= github.com/smartcontractkit/freeport v0.1.1 h1:B5fhEtmgomdIhw03uPVbVTP6oPv27fBhZsoZZMSIS8I= github.com/smartcontractkit/freeport v0.1.1/go.mod h1:T4zH9R8R8lVWKfU7tUvYz2o2jMv1OpGCdpY2j2QZXzU= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= diff --git a/relayer/gotron-sdk/pkg/http/fullnode/contract.go b/relayer/gotron-sdk/pkg/http/fullnode/contract.go index 6db63ed..33f449b 100644 --- a/relayer/gotron-sdk/pkg/http/fullnode/contract.go +++ b/relayer/gotron-sdk/pkg/http/fullnode/contract.go @@ -151,6 +151,24 @@ func (tc *Client) TriggerSmartContract(from, contractAddress address.Address, me return &contractResponse, nil } +func (tc *Client) TriggerSmartContractWithData(from, contractAddress address.Address, data string, feeLimit int32, tAmount int64) (*TriggerSmartContractResponse, error) { + tcRequest := TriggerSmartContractRequest{ + OwnerAddress: from.String(), + ContractAddress: contractAddress.String(), + Data: data, + FeeLimit: feeLimit, + CallValue: tAmount, + Visible: true, + } + contractResponse := TriggerSmartContractResponse{} + err := tc.Post("/triggersmartcontract", tcRequest, &contractResponse) + if err != nil { + return nil, err + } + + return &contractResponse, nil +} + type BroadcastResponse struct { Result bool `json:"result"` Code string `json:"code"` diff --git a/relayer/mocks/CombinedClient.go b/relayer/mocks/CombinedClient.go index da4f7d1..b6cd5e3 100644 --- a/relayer/mocks/CombinedClient.go +++ b/relayer/mocks/CombinedClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.53.4. DO NOT EDIT. package mocks @@ -568,6 +568,36 @@ func (_m *CombinedClient) TriggerSmartContract(from address.Address, contractAdd return r0, r1 } +// TriggerSmartContractWithData provides a mock function with given fields: from, contractAddress, data, feeLimit, tAmount +func (_m *CombinedClient) TriggerSmartContractWithData(from address.Address, contractAddress address.Address, data string, feeLimit int32, tAmount int64) (*fullnode.TriggerSmartContractResponse, error) { + ret := _m.Called(from, contractAddress, data, feeLimit, tAmount) + + if len(ret) == 0 { + panic("no return value specified for TriggerSmartContractWithData") + } + + var r0 *fullnode.TriggerSmartContractResponse + var r1 error + if rf, ok := ret.Get(0).(func(address.Address, address.Address, string, int32, int64) (*fullnode.TriggerSmartContractResponse, error)); ok { + return rf(from, contractAddress, data, feeLimit, tAmount) + } + if rf, ok := ret.Get(0).(func(address.Address, address.Address, string, int32, int64) *fullnode.TriggerSmartContractResponse); ok { + r0 = rf(from, contractAddress, data, feeLimit, tAmount) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*fullnode.TriggerSmartContractResponse) + } + } + + if rf, ok := ret.Get(1).(func(address.Address, address.Address, string, int32, int64) error); ok { + r1 = rf(from, contractAddress, data, feeLimit, tAmount) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // NewCombinedClient creates a new instance of CombinedClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewCombinedClient(t interface { diff --git a/relayer/mocks/FullNodeClient.go b/relayer/mocks/FullNodeClient.go index 2268b56..8b7a4a9 100644 --- a/relayer/mocks/FullNodeClient.go +++ b/relayer/mocks/FullNodeClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.50.0. DO NOT EDIT. +// Code generated by mockery v2.53.4. DO NOT EDIT. package mocks @@ -378,6 +378,36 @@ func (_m *FullNodeClient) TriggerSmartContract(from address.Address, contractAdd return r0, r1 } +// TriggerSmartContractWithData provides a mock function with given fields: from, contractAddress, data, feeLimit, tAmount +func (_m *FullNodeClient) TriggerSmartContractWithData(from address.Address, contractAddress address.Address, data string, feeLimit int32, tAmount int64) (*fullnode.TriggerSmartContractResponse, error) { + ret := _m.Called(from, contractAddress, data, feeLimit, tAmount) + + if len(ret) == 0 { + panic("no return value specified for TriggerSmartContractWithData") + } + + var r0 *fullnode.TriggerSmartContractResponse + var r1 error + if rf, ok := ret.Get(0).(func(address.Address, address.Address, string, int32, int64) (*fullnode.TriggerSmartContractResponse, error)); ok { + return rf(from, contractAddress, data, feeLimit, tAmount) + } + if rf, ok := ret.Get(0).(func(address.Address, address.Address, string, int32, int64) *fullnode.TriggerSmartContractResponse); ok { + r0 = rf(from, contractAddress, data, feeLimit, tAmount) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*fullnode.TriggerSmartContractResponse) + } + } + + if rf, ok := ret.Get(1).(func(address.Address, address.Address, string, int32, int64) error); ok { + r1 = rf(from, contractAddress, data, feeLimit, tAmount) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // NewFullNodeClient creates a new instance of FullNodeClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewFullNodeClient(t interface { diff --git a/relayer/sdk/full_node_client.go b/relayer/sdk/full_node_client.go index 6664f69..bcd057b 100644 --- a/relayer/sdk/full_node_client.go +++ b/relayer/sdk/full_node_client.go @@ -24,6 +24,7 @@ type FullNodeClient interface { DeployContract(ownerAddress address.Address, contractName, abiJson, bytecode string, oeLimit, curPercent, feeLimit int, params []interface{}) (*fullnode.DeployContractResponse, error) GetContract(address address.Address) (*fullnode.GetContractResponse, error) TriggerSmartContract(from, contractAddress address.Address, method string, params []any, feeLimit int32, tAmount int64) (*fullnode.TriggerSmartContractResponse, error) + TriggerSmartContractWithData(from, contractAddress address.Address, data string, feeLimit int32, tAmount int64) (*fullnode.TriggerSmartContractResponse, error) Transfer(fromAddress, toAddress address.Address, amount int64) (*common.Transaction, error) BroadcastTransaction(reqBody *common.Transaction) (*fullnode.BroadcastResponse, error) GetEnergyPrices() (*fullnode.EnergyPrices, error)