Skip to content

Commit b2076b4

Browse files
committed
refactor(primitives/types): related to tx payment module
1 parent 5be518b commit b2076b4

File tree

10 files changed

+172
-40
lines changed

10 files changed

+172
-40
lines changed

api/transaction_payment/module.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/LimeChain/gosemble/constants"
88
"github.com/LimeChain/gosemble/execution/types"
99
"github.com/LimeChain/gosemble/frame/transaction_payment"
10+
tx_types "github.com/LimeChain/gosemble/frame/transaction_payment/types"
1011
"github.com/LimeChain/gosemble/primitives/hashing"
1112
primitives "github.com/LimeChain/gosemble/primitives/types"
1213
"github.com/LimeChain/gosemble/utils"
@@ -86,12 +87,12 @@ func (m Module) QueryFeeDetails(dataPtr int32, dataLen int32) int64 {
8687

8788
dispatchInfo := primitives.GetDispatchInfo(ext.Function())
8889

89-
var feeDetails primitives.FeeDetails
90+
var feeDetails tx_types.FeeDetails
9091
if ext.IsSigned() {
9192
feeDetails = m.txPayments.ComputeFeeDetails(length, dispatchInfo, constants.DefaultTip)
9293
} else {
93-
feeDetails = primitives.FeeDetails{
94-
InclusionFee: sc.NewOption[primitives.InclusionFee](nil),
94+
feeDetails = tx_types.FeeDetails{
95+
InclusionFee: sc.NewOption[tx_types.InclusionFee](nil),
9596
}
9697
}
9798

api/transaction_payment/module_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/ChainSafe/gossamer/lib/common"
88
sc "github.com/LimeChain/goscale"
99
"github.com/LimeChain/gosemble/constants"
10+
"github.com/LimeChain/gosemble/frame/transaction_payment/types"
1011
"github.com/LimeChain/gosemble/mocks"
1112
primitives "github.com/LimeChain/gosemble/primitives/types"
1213
"github.com/stretchr/testify/assert"
@@ -136,9 +137,9 @@ func Test_Module_QueryInfo_Unsigned(t *testing.T) {
136137
func Test_Module_QueryFeeDetails_Signed(t *testing.T) {
137138
target := setup()
138139

139-
feeDetails := primitives.FeeDetails{
140-
InclusionFee: sc.NewOption[primitives.InclusionFee](
141-
primitives.NewInclusionFee(
140+
feeDetails := types.FeeDetails{
141+
InclusionFee: sc.NewOption[types.InclusionFee](
142+
types.NewInclusionFee(
142143
sc.NewU128(9),
143144
sc.NewU128(8),
144145
sc.NewU128(7),
@@ -176,8 +177,8 @@ func Test_Module_QueryFeeDetails_Signed(t *testing.T) {
176177
func Test_Module_QueryFeeDetails_Unsigned(t *testing.T) {
177178
target := setup()
178179

179-
feeDetails := primitives.FeeDetails{
180-
InclusionFee: sc.NewOption[primitives.InclusionFee](nil),
180+
feeDetails := types.FeeDetails{
181+
InclusionFee: sc.NewOption[types.InclusionFee](nil),
181182
}
182183
bufferUxt := bytes.NewBuffer(length.Bytes())
183184

api/transaction_payment_call/module_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/ChainSafe/gossamer/lib/common"
88
sc "github.com/LimeChain/goscale"
99
"github.com/LimeChain/gosemble/constants"
10+
"github.com/LimeChain/gosemble/frame/transaction_payment/types"
1011
"github.com/LimeChain/gosemble/mocks"
1112
primitives "github.com/LimeChain/gosemble/primitives/types"
1213
"github.com/stretchr/testify/assert"
@@ -93,9 +94,9 @@ func Test_Module_QueryCallInfo(t *testing.T) {
9394
func Test_Module_QueryCallFeeDetails(t *testing.T) {
9495
target := setup()
9596

96-
feeDetails := primitives.FeeDetails{
97-
InclusionFee: sc.NewOption[primitives.InclusionFee](
98-
primitives.NewInclusionFee(
97+
feeDetails := types.FeeDetails{
98+
InclusionFee: sc.NewOption[types.InclusionFee](
99+
types.NewInclusionFee(
99100
sc.NewU128(9),
100101
sc.NewU128(8),
101102
sc.NewU128(7),

frame/transaction_payment/module.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package transaction_payment
33
import (
44
sc "github.com/LimeChain/goscale"
55
"github.com/LimeChain/gosemble/constants/metadata"
6+
"github.com/LimeChain/gosemble/frame/transaction_payment/types"
67
"github.com/LimeChain/gosemble/hooks"
78
primitives "github.com/LimeChain/gosemble/primitives/types"
89
)
@@ -11,7 +12,7 @@ type Module interface {
1112
primitives.Module
1213

1314
ComputeFee(len sc.U32, info primitives.DispatchInfo, tip primitives.Balance) primitives.Balance
14-
ComputeFeeDetails(len sc.U32, info primitives.DispatchInfo, tip primitives.Balance) primitives.FeeDetails
15+
ComputeFeeDetails(len sc.U32, info primitives.DispatchInfo, tip primitives.Balance) types.FeeDetails
1516
ComputeActualFee(len sc.U32, info primitives.DispatchInfo, postInfo primitives.PostDispatchInfo, tip primitives.Balance) primitives.Balance
1617
OperationalFeeMultiplier() sc.U8
1718
}
@@ -186,19 +187,19 @@ func (m module) ComputeFee(len sc.U32, info primitives.DispatchInfo, tip primiti
186187
return m.ComputeFeeDetails(len, info, tip).FinalFee()
187188
}
188189

189-
func (m module) ComputeFeeDetails(len sc.U32, info primitives.DispatchInfo, tip primitives.Balance) primitives.FeeDetails {
190+
func (m module) ComputeFeeDetails(len sc.U32, info primitives.DispatchInfo, tip primitives.Balance) types.FeeDetails {
190191
return m.computeFeeRaw(len, info.Weight, tip, info.PaysFee, info.Class)
191192
}
192193

193194
func (m module) ComputeActualFee(len sc.U32, info primitives.DispatchInfo, postInfo primitives.PostDispatchInfo, tip primitives.Balance) primitives.Balance {
194195
return m.computeActualFeeDetails(len, info, postInfo, tip).FinalFee()
195196
}
196197

197-
func (m module) computeActualFeeDetails(len sc.U32, info primitives.DispatchInfo, postInfo primitives.PostDispatchInfo, tip primitives.Balance) primitives.FeeDetails {
198+
func (m module) computeActualFeeDetails(len sc.U32, info primitives.DispatchInfo, postInfo primitives.PostDispatchInfo, tip primitives.Balance) types.FeeDetails {
198199
return m.computeFeeRaw(len, postInfo.CalcActualWeight(&info), tip, postInfo.Pays(&info), info.Class)
199200
}
200201

201-
func (m module) computeFeeRaw(len sc.U32, weight primitives.Weight, tip primitives.Balance, paysFee primitives.Pays, class primitives.DispatchClass) primitives.FeeDetails {
202+
func (m module) computeFeeRaw(len sc.U32, weight primitives.Weight, tip primitives.Balance, paysFee primitives.Pays, class primitives.DispatchClass) types.FeeDetails {
202203
if paysFee[0] == primitives.PaysYes { // TODO: type safety
203204
unadjustedWeightFee := m.weightToFee(weight)
204205
multiplier := m.storage.NextFeeMultiplier.Get()
@@ -213,16 +214,16 @@ func (m module) computeFeeRaw(len sc.U32, weight primitives.Weight, tip primitiv
213214
lenFee := m.lengthToFee(len)
214215
baseFee := m.weightToFee(m.config.BlockWeights.Get(class).BaseExtrinsic)
215216

216-
inclusionFee := sc.NewOption[primitives.InclusionFee](primitives.NewInclusionFee(baseFee, lenFee, adjustedWeightFee))
217+
inclusionFee := sc.NewOption[types.InclusionFee](types.NewInclusionFee(baseFee, lenFee, adjustedWeightFee))
217218

218-
return primitives.FeeDetails{
219+
return types.FeeDetails{
219220
InclusionFee: inclusionFee,
220221
Tip: tip,
221222
}
222223
}
223224

224-
return primitives.FeeDetails{
225-
InclusionFee: sc.NewOption[primitives.InclusionFee](nil),
225+
return types.FeeDetails{
226+
InclusionFee: sc.NewOption[types.InclusionFee](nil),
226227
Tip: tip,
227228
}
228229
}

primitives/types/fee_details.go renamed to frame/transaction_payment/types/fee_details.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import (
44
"bytes"
55

66
sc "github.com/LimeChain/goscale"
7+
primitives "github.com/LimeChain/gosemble/primitives/types"
78
)
89

910
type FeeDetails struct {
1011
InclusionFee sc.Option[InclusionFee]
11-
12-
Tip Balance // not serializable
12+
Tip primitives.Balance // not serializable
1313
}
1414

1515
func (fd FeeDetails) Encode(buffer *bytes.Buffer) {
@@ -26,7 +26,7 @@ func DecodeFeeDetails(buffer *bytes.Buffer) FeeDetails {
2626
}
2727
}
2828

29-
func (fd FeeDetails) FinalFee() Balance {
29+
func (fd FeeDetails) FinalFee() primitives.Balance {
3030
sum := fd.Tip
3131

3232
if fd.InclusionFee.HasValue {
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package types
2+
3+
import (
4+
"bytes"
5+
"encoding/hex"
6+
"testing"
7+
8+
sc "github.com/LimeChain/goscale"
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
var (
13+
expectedFeeDetailsBytes, _ = hex.DecodeString(
14+
"01010000000000000000000000000000000200000000000000000000000000000003000000000000000000000000000000",
15+
)
16+
)
17+
18+
var (
19+
targetFeeDetails = FeeDetails{
20+
InclusionFee: sc.NewOption[InclusionFee](InclusionFee{
21+
BaseFee: sc.NewU128(1),
22+
LenFee: sc.NewU128(2),
23+
AdjustedWeightFee: sc.NewU128(3),
24+
}),
25+
Tip: sc.NewU128(4),
26+
}
27+
)
28+
29+
func Test_FeeDetails_Encode(t *testing.T) {
30+
buffer := &bytes.Buffer{}
31+
32+
targetFeeDetails.Encode(buffer)
33+
34+
assert.Equal(t, expectedFeeDetailsBytes, buffer.Bytes())
35+
36+
}
37+
38+
func Test_FeeDetails_Bytes(t *testing.T) {
39+
assert.Equal(t, expectedFeeDetailsBytes, targetFeeDetails.Bytes())
40+
}
41+
42+
func Test_FeeDetails_DecodeFeeDetails(t *testing.T) {
43+
result := DecodeFeeDetails(bytes.NewBuffer(expectedFeeDetailsBytes))
44+
45+
expectedFeeDetails := FeeDetails{
46+
InclusionFee: sc.NewOption[InclusionFee](InclusionFee{
47+
BaseFee: sc.NewU128(1),
48+
LenFee: sc.NewU128(2),
49+
AdjustedWeightFee: sc.NewU128(3),
50+
}),
51+
}
52+
53+
assert.Equal(t, expectedFeeDetails, result)
54+
}
55+
56+
func Test_FeeDetails_FinalFee_WithInclusionFee(t *testing.T) {
57+
result := targetFeeDetails.FinalFee()
58+
59+
assert.Equal(t, sc.NewU128(10), result)
60+
}
61+
62+
func Test_FeeDetails_FinalFee_WithoutInclusionFee(t *testing.T) {
63+
targetFeeDetails := FeeDetails{
64+
InclusionFee: sc.NewOption[InclusionFee](nil),
65+
Tip: sc.NewU128(4),
66+
}
67+
68+
result := targetFeeDetails.FinalFee()
69+
70+
assert.Equal(t, sc.NewU128(4), result)
71+
}

primitives/types/inclusion_fee.go renamed to frame/transaction_payment/types/inclusion_fee.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ import (
44
"bytes"
55

66
sc "github.com/LimeChain/goscale"
7+
primitives "github.com/LimeChain/gosemble/primitives/types"
78
)
89

910
type InclusionFee struct {
10-
BaseFee Balance
11-
LenFee Balance
12-
AdjustedWeightFee Balance
11+
BaseFee primitives.Balance
12+
LenFee primitives.Balance
13+
AdjustedWeightFee primitives.Balance
1314
}
1415

15-
func NewInclusionFee(baseFee, lenFee, adjustedWeightFee Balance) InclusionFee {
16+
func NewInclusionFee(baseFee, lenFee, adjustedWeightFee primitives.Balance) InclusionFee {
1617
return InclusionFee{
1718
baseFee,
1819
lenFee,
@@ -38,6 +39,6 @@ func DecodeInclusionFee(buffer *bytes.Buffer) InclusionFee {
3839
}
3940
}
4041

41-
func (i InclusionFee) InclusionFee() Balance {
42+
func (i InclusionFee) InclusionFee() primitives.Balance {
4243
return i.BaseFee.Add(i.LenFee).Add(i.AdjustedWeightFee)
4344
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package types
2+
3+
import (
4+
"bytes"
5+
"encoding/hex"
6+
"testing"
7+
8+
sc "github.com/LimeChain/goscale"
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
var (
13+
expectedInclusionFeeBytes, _ = hex.DecodeString(
14+
"010000000000000000000000000000000200000000000000000000000000000003000000000000000000000000000000",
15+
)
16+
)
17+
18+
var (
19+
targetInclusionFee = InclusionFee{
20+
BaseFee: sc.NewU128(1),
21+
LenFee: sc.NewU128(2),
22+
AdjustedWeightFee: sc.NewU128(3),
23+
}
24+
)
25+
26+
func Test_NewInclusionFee(t *testing.T) {
27+
result := NewInclusionFee(sc.NewU128(1), sc.NewU128(2), sc.NewU128(3))
28+
29+
assert.Equal(t, targetInclusionFee, result)
30+
}
31+
32+
func Test_InclusionFee_Encode(t *testing.T) {
33+
buffer := &bytes.Buffer{}
34+
35+
targetInclusionFee.Encode(buffer)
36+
37+
assert.Equal(t, expectedInclusionFeeBytes, buffer.Bytes())
38+
}
39+
40+
func Test_InclusionFee_Bytes(t *testing.T) {
41+
assert.Equal(t, expectedInclusionFeeBytes, targetInclusionFee.Bytes())
42+
}
43+
44+
func Test_DecodeInclusionFee(t *testing.T) {
45+
result := DecodeInclusionFee(bytes.NewBuffer(expectedInclusionFeeBytes))
46+
47+
assert.Equal(t, targetInclusionFee, result)
48+
}
49+
50+
func Test_InclusionFee_InclusionFee(t *testing.T) {
51+
result := targetInclusionFee.InclusionFee()
52+
53+
assert.Equal(t, sc.NewU128(6), result)
54+
}

mocks/tx_payment_module.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package mocks
22

33
import (
44
sc "github.com/LimeChain/goscale"
5+
tx_types "github.com/LimeChain/gosemble/frame/transaction_payment/types"
56
"github.com/LimeChain/gosemble/primitives/types"
67
"github.com/stretchr/testify/mock"
78
)
@@ -83,9 +84,9 @@ func (m *TransactionPaymentModule) ComputeFee(len sc.U32, info types.DispatchInf
8384
return args.Get(0).(types.Balance)
8485
}
8586

86-
func (m *TransactionPaymentModule) ComputeFeeDetails(len sc.U32, info types.DispatchInfo, tip types.Balance) types.FeeDetails {
87+
func (m *TransactionPaymentModule) ComputeFeeDetails(len sc.U32, info types.DispatchInfo, tip types.Balance) tx_types.FeeDetails {
8788
args := m.Called(len, info, tip)
88-
return args.Get(0).(types.FeeDetails)
89+
return args.Get(0).(tx_types.FeeDetails)
8990
}
9091

9192
func (m *TransactionPaymentModule) ComputeActualFee(len sc.U32, info types.DispatchInfo, postInfo types.PostDispatchInfo, tip types.Balance) types.Balance {

runtime/transaction_payment_test.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"testing"
66

7+
"github.com/LimeChain/gosemble/frame/transaction_payment/types"
78
primitives "github.com/LimeChain/gosemble/primitives/types"
89

910
sc "github.com/LimeChain/goscale"
@@ -140,11 +141,11 @@ func Test_TransactionPaymentApi_QueryFeeDetails_Signed_Success(t *testing.T) {
140141
buffer.Reset()
141142
buffer.Write(bytesFeeDetails)
142143

143-
fd := primitives.DecodeFeeDetails(buffer)
144+
fd := types.DecodeFeeDetails(buffer)
144145

145-
expectedFd := primitives.FeeDetails{
146-
InclusionFee: sc.NewOption[primitives.InclusionFee](
147-
primitives.NewInclusionFee(
146+
expectedFd := types.FeeDetails{
147+
InclusionFee: sc.NewOption[types.InclusionFee](
148+
types.NewInclusionFee(
148149
sc.NewU128(110_536_000),
149150
sc.NewU128(107),
150151
sc.NewU128(0),
@@ -176,10 +177,10 @@ func Test_TransactionPaymentApi_QueryFeeDetails_Unsigned_Success(t *testing.T) {
176177
buffer.Reset()
177178
buffer.Write(bytesFeeDetails)
178179

179-
fd := primitives.DecodeFeeDetails(buffer)
180+
fd := types.DecodeFeeDetails(buffer)
180181

181-
expectedFd := primitives.FeeDetails{
182-
InclusionFee: sc.NewOption[primitives.InclusionFee](nil),
182+
expectedFd := types.FeeDetails{
183+
InclusionFee: sc.NewOption[types.InclusionFee](nil),
183184
}
184185

185186
assert.Equal(t, expectedFd, fd)
@@ -242,11 +243,11 @@ func Test_TransactionPaymentCallApi_QueryCallFeeDetails_Success(t *testing.T) {
242243
buffer.Reset()
243244
buffer.Write(bytesFeeDetails)
244245

245-
fd := primitives.DecodeFeeDetails(buffer)
246+
fd := types.DecodeFeeDetails(buffer)
246247

247-
expectedFd := primitives.FeeDetails{
248-
InclusionFee: sc.NewOption[primitives.InclusionFee](
249-
primitives.NewInclusionFee(
248+
expectedFd := types.FeeDetails{
249+
InclusionFee: sc.NewOption[types.InclusionFee](
250+
types.NewInclusionFee(
250251
sc.NewU128(110_536_000),
251252
sc.NewU128(3),
252253
sc.NewU128(0),

0 commit comments

Comments
 (0)