Skip to content

Commit 43b9523

Browse files
veronica-bytesHazukaversomeone235
authored
Adding support for mass. (#2301)
* Adding support for mass. * update grpc v1.69.2 * Upgrade protos using latest protoc * Use MassCommitment instead of Mass * Fix DomainTransaction clone, equal and tests --------- Co-authored-by: veronica <[email protected]> Co-authored-by: Ori Newman <[email protected]>
1 parent 6085d1f commit 43b9523

File tree

14 files changed

+3995
-6649
lines changed

14 files changed

+3995
-6649
lines changed

app/appmessage/domainconverters.go

+11-8
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package appmessage
22

33
import (
44
"encoding/hex"
5-
"github.com/pkg/errors"
65
"math/big"
76

7+
"github.com/pkg/errors"
8+
89
"github.com/kaspanet/kaspad/domain/consensus/utils/blockheader"
910
"github.com/kaspanet/kaspad/domain/consensus/utils/hashes"
1011
"github.com/kaspanet/kaspad/domain/consensus/utils/utxo"
@@ -213,13 +214,14 @@ func RPCTransactionToDomainTransaction(rpcTransaction *RPCTransaction) (*externa
213214
}
214215

215216
return &externalapi.DomainTransaction{
216-
Version: rpcTransaction.Version,
217-
Inputs: inputs,
218-
Outputs: outputs,
219-
LockTime: rpcTransaction.LockTime,
220-
SubnetworkID: *subnetworkID,
221-
Gas: rpcTransaction.Gas,
222-
Payload: payload,
217+
Version: rpcTransaction.Version,
218+
Inputs: inputs,
219+
Outputs: outputs,
220+
LockTime: rpcTransaction.LockTime,
221+
SubnetworkID: *subnetworkID,
222+
Gas: rpcTransaction.Gas,
223+
MassCommitment: rpcTransaction.Mass,
224+
Payload: payload,
223225
}, nil
224226
}
225227

@@ -287,6 +289,7 @@ func DomainTransactionToRPCTransaction(transaction *externalapi.DomainTransactio
287289
LockTime: transaction.LockTime,
288290
SubnetworkID: subnetworkID,
289291
Gas: transaction.Gas,
292+
Mass: transaction.MassCommitment,
290293
Payload: payload,
291294
}
292295
}

app/appmessage/rpc_submit_transaction.go

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ type RPCTransaction struct {
5252
SubnetworkID string
5353
Gas uint64
5454
Payload string
55+
Mass uint64
5556
VerboseData *RPCTransactionVerboseData
5657
}
5758

domain/consensus/model/acceptancedata_equal_clone_test.go

+11
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,7 @@ func initTestBlockAcceptanceDataForClone() []*externalapi.BlockAcceptanceData {
329329
[]byte{0x01},
330330
0,
331331
1,
332+
0,
332333
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
333334
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
334335
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -377,6 +378,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
377378
[]byte{0x01},
378379
0,
379380
1,
381+
0,
380382
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
381383
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382384
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -410,6 +412,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
410412
[]byte{0x01},
411413
0,
412414
1,
415+
0,
413416
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
414417
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
415418
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -443,6 +446,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
443446
[]byte{0x01},
444447
0,
445448
1,
449+
0,
446450
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
447451
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
448452
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -476,6 +480,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
476480
[]byte{0x01},
477481
0,
478482
1,
483+
0,
479484
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
480485
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
481486
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -510,6 +515,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
510515
[]byte{0x01},
511516
0,
512517
1,
518+
0,
513519
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
514520
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
515521
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -614,6 +620,7 @@ func initTestAcceptanceDataForClone() []externalapi.AcceptanceData {
614620
[]byte{0x01},
615621
0,
616622
1,
623+
0,
617624
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
618625
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
619626
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -664,6 +671,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
664671
[]byte{0x01},
665672
0,
666673
1,
674+
0,
667675
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
668676
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
669677
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -697,6 +705,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
697705
[]byte{0x01},
698706
0,
699707
1,
708+
0,
700709
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
701710
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
702711
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -730,6 +739,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
730739
[]byte{0x01},
731740
0,
732741
1,
742+
0,
733743
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
734744
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
735745
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -763,6 +773,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
763773
[]byte{0x01},
764774
0,
765775
1,
776+
0,
766777
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
767778
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
768779
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

domain/consensus/model/externalapi/transaction.go

+19-13
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ type DomainTransaction struct {
1818
Gas uint64
1919
Payload []byte
2020

21-
Fee uint64
22-
Mass uint64
21+
Fee uint64
22+
Mass uint64
23+
MassCommitment uint64
2324

2425
// ID is a field that is used to cache the transaction ID.
2526
// Always use consensushashing.TransactionID instead of accessing this field directly
@@ -47,23 +48,24 @@ func (tx *DomainTransaction) Clone() *DomainTransaction {
4748
}
4849

4950
return &DomainTransaction{
50-
Version: tx.Version,
51-
Inputs: inputsClone,
52-
Outputs: outputsClone,
53-
LockTime: tx.LockTime,
54-
SubnetworkID: *tx.SubnetworkID.Clone(),
55-
Gas: tx.Gas,
56-
Payload: payloadClone,
57-
Fee: tx.Fee,
58-
Mass: tx.Mass,
59-
ID: idClone,
51+
Version: tx.Version,
52+
Inputs: inputsClone,
53+
Outputs: outputsClone,
54+
LockTime: tx.LockTime,
55+
SubnetworkID: *tx.SubnetworkID.Clone(),
56+
Gas: tx.Gas,
57+
Payload: payloadClone,
58+
Fee: tx.Fee,
59+
Mass: tx.Mass,
60+
MassCommitment: tx.MassCommitment,
61+
ID: idClone,
6062
}
6163
}
6264

6365
// If this doesn't compile, it means the type definition has been changed, so it's
6466
// an indication to update Equal and Clone accordingly.
6567
var _ = DomainTransaction{0, []*DomainTransactionInput{}, []*DomainTransactionOutput{}, 0,
66-
DomainSubnetworkID{}, 0, []byte{}, 0, 0,
68+
DomainSubnetworkID{}, 0, []byte{}, 0, 0, 0,
6769
&DomainTransactionID{}}
6870

6971
// Equal returns whether tx equals to other
@@ -112,6 +114,10 @@ func (tx *DomainTransaction) Equal(other *DomainTransaction) bool {
112114
return false
113115
}
114116

117+
if tx.MassCommitment != other.MassCommitment {
118+
return false
119+
}
120+
115121
if tx.Fee != 0 && other.Fee != 0 && tx.Fee != other.Fee {
116122
panic(errors.New("identical transactions should always have the same fee"))
117123
}

domain/consensus/model/externalapi/transaction_equal_clone_test.go

+47
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ func initTestBaseTransaction() *externalapi.DomainTransaction {
8383
[]byte{0x01},
8484
0,
8585
1,
86+
0,
8687
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8788
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8889
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -112,6 +113,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
112113
[]byte{0x01},
113114
0,
114115
1,
116+
0,
115117
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116118
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117119
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -137,6 +139,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
137139
[]byte{0x01},
138140
0,
139141
1,
142+
0,
140143
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
141144
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142145
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -162,6 +165,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
162165
[]byte{0x01, 0x02}, //Changed
163166
0,
164167
1,
168+
0,
165169
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166170
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167171
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -186,6 +190,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
186190
[]byte{0x01},
187191
0,
188192
1,
193+
0,
189194
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
190195
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
191196
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -213,6 +218,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
213218
[]byte{0x01},
214219
0,
215220
1,
221+
0,
216222
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217223
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
218224
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -239,6 +245,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
239245
[]byte{0x01},
240246
1000000000, //Changed
241247
1,
248+
0,
242249
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
243250
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
244251
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -263,6 +270,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
263270
[]byte{0x01},
264271
0,
265272
1,
273+
0,
266274
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
267275
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
268276
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -287,6 +295,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
287295
[]byte{0x01},
288296
0,
289297
2, //Changed
298+
0,
290299
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
291300
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
292301
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -311,6 +320,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
311320
[]byte{0x01},
312321
0,
313322
1,
323+
0,
314324
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
315325
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
316326
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -341,6 +351,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
341351
[]byte{0x01},
342352
0,
343353
1,
354+
0,
344355
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
345356
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
346357
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -366,6 +377,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
366377
[]byte{0x01},
367378
0,
368379
1,
380+
0,
369381
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
370382
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
371383
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -390,6 +402,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
390402
[]byte{0x01},
391403
0,
392404
1,
405+
0,
393406
nil, //changed
394407
},
395408
expectedResult: true,
@@ -411,6 +424,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
411424
[]byte{0x01},
412425
0,
413426
1,
427+
0,
414428
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
415429
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
416430
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -435,6 +449,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
435449
[]byte{0x01},
436450
0,
437451
1,
452+
0,
438453
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
439454
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
440455
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -461,6 +476,34 @@ func initTestTransactionToCompare() []*transactionToCompare {
461476
[]byte{0x01},
462477
0,
463478
1,
479+
0,
480+
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
481+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
482+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
483+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}),
484+
},
485+
expectedResult: false,
486+
},
487+
{
488+
tx: &externalapi.DomainTransaction{
489+
1,
490+
[]*externalapi.DomainTransactionInput{{externalapi.DomainOutpoint{
491+
*externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x01}), 0xFFFF},
492+
[]byte{1, 2, 3},
493+
uint64(0xFFFFFFFF),
494+
1,
495+
utxo.NewUTXOEntry(1, &externalapi.ScriptPublicKey{Script: []byte{0, 1, 2, 3}, Version: 0}, true, 2)}},
496+
[]*externalapi.DomainTransactionOutput{{uint64(0xFFFF),
497+
&externalapi.ScriptPublicKey{Script: []byte{1, 2}, Version: 0}},
498+
{uint64(0xFFFF),
499+
&externalapi.ScriptPublicKey{Script: []byte{1, 3}, Version: 0}}},
500+
1,
501+
externalapi.DomainSubnetworkID{0x01},
502+
1,
503+
[]byte{0x01},
504+
0,
505+
1,
506+
1, // Changed
464507
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
465508
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
466509
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -536,6 +579,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
536579
[]byte{0x01},
537580
1,
538581
1,
582+
0,
539583
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
540584
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
541585
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -555,6 +599,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
555599
[]byte{0x01},
556600
1,
557601
1,
602+
0,
558603
nil,
559604
},
560605
expectedResult: false,
@@ -569,6 +614,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
569614
[]byte{0x01},
570615
1,
571616
1,
617+
0,
572618
nil,
573619
},
574620
expectedResult: true,
@@ -583,6 +629,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
583629
[]byte{0x01},
584630
2, // Changed fee
585631
1,
632+
0,
586633
nil,
587634
},
588635
expectsPanic: true,

0 commit comments

Comments
 (0)