@@ -21,6 +21,7 @@ import (
21
21
"golang.org/x/sync/errgroup"
22
22
23
23
"github.com/spacemeshos/go-spacemesh/activation/wire"
24
+ "github.com/spacemeshos/go-spacemesh/codec"
24
25
"github.com/spacemeshos/go-spacemesh/common/types"
25
26
"github.com/spacemeshos/go-spacemesh/events"
26
27
"github.com/spacemeshos/go-spacemesh/p2p/pubsub"
@@ -51,11 +52,10 @@ func TestMain(m *testing.M) {
51
52
52
53
func newAtx (
53
54
challenge types.NIPostChallenge ,
54
- nipost * types.NIPost ,
55
55
numUnits uint32 ,
56
56
coinbase types.Address ,
57
57
) * types.ActivationTx {
58
- atx := types .NewActivationTx (challenge , coinbase , nipost , numUnits , nil )
58
+ atx := types .NewActivationTx (challenge , coinbase , numUnits , nil )
59
59
atx .SetEffectiveNumUnits (numUnits )
60
60
atx .SetReceived (time .Now ())
61
61
atx .SetValidity (types .Valid )
@@ -353,8 +353,7 @@ func TestBuilder_PublishActivationTx_HappyFlow(t *testing.T) {
353
353
PositioningATX : tab .goldenATXID ,
354
354
CommitmentATX : & tab .goldenATXID ,
355
355
}
356
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
357
- prevAtx := newAtx (ch , nipostData .NIPost , 2 , types.Address {})
356
+ prevAtx := newAtx (ch , 2 , types.Address {})
358
357
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
359
358
vPrevAtx , err := prevAtx .Verify (0 , 1 )
360
359
require .NoError (t , err )
@@ -396,8 +395,7 @@ func TestBuilder_Loop_WaitsOnStaleChallenge(t *testing.T) {
396
395
PositioningATX : tab .goldenATXID ,
397
396
CommitmentATX : & tab .goldenATXID ,
398
397
}
399
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
400
- prevAtx := newAtx (ch , nipostData .NIPost , 2 , types.Address {})
398
+ prevAtx := newAtx (ch , 2 , types.Address {})
401
399
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
402
400
vPrevAtx , err := prevAtx .Verify (0 , 1 )
403
401
require .NoError (t , err )
@@ -454,8 +452,7 @@ func TestBuilder_PublishActivationTx_FaultyNet(t *testing.T) {
454
452
PositioningATX : tab .goldenATXID ,
455
453
CommitmentATX : & tab .goldenATXID ,
456
454
}
457
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
458
- prevAtx := newAtx (ch , nipostData .NIPost , 2 , types.Address {})
455
+ prevAtx := newAtx (ch , 2 , types.Address {})
459
456
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
460
457
vPrevAtx , err := prevAtx .Verify (0 , 1 )
461
458
require .NoError (t , err )
@@ -543,8 +540,7 @@ func TestBuilder_PublishActivationTx_UsesExistingChallengeOnLatePublish(t *testi
543
540
PositioningATX : types.ATXID {1 , 2 , 3 },
544
541
CommitmentATX : nil ,
545
542
}
546
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
547
- prevAtx := newAtx (challenge , nipostData .NIPost , posEpoch .Uint32 (), types.Address {})
543
+ prevAtx := newAtx (challenge , posEpoch .Uint32 (), types.Address {})
548
544
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
549
545
vPrevAtx , err := prevAtx .Verify (0 , 1 )
550
546
require .NoError (t , err )
@@ -628,8 +624,7 @@ func TestBuilder_PublishActivationTx_RebuildNIPostWhenTargetEpochPassed(t *testi
628
624
PositioningATX : types.ATXID {1 , 2 , 3 },
629
625
CommitmentATX : nil ,
630
626
}
631
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
632
- prevAtx := newAtx (ch , nipostData .NIPost , 2 , types.Address {})
627
+ prevAtx := newAtx (ch , 2 , types.Address {})
633
628
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
634
629
vPrevAtx , err := prevAtx .Verify (0 , 1 )
635
630
require .NoError (t , err )
@@ -700,7 +695,7 @@ func TestBuilder_PublishActivationTx_RebuildNIPostWhenTargetEpochPassed(t *testi
700
695
PositioningATX : types.ATXID {1 , 2 , 3 },
701
696
CommitmentATX : nil ,
702
697
}
703
- posAtx := newAtx (ch , nipostData . NIPost , 2 , types.Address {})
698
+ posAtx := newAtx (ch , 2 , types.Address {})
704
699
require .NoError (t , SignAndFinalizeAtx (sig , posAtx ))
705
700
vPosAtx , err := posAtx .Verify (0 , 1 )
706
701
require .NoError (t , err )
@@ -731,10 +726,9 @@ func TestBuilder_PublishActivationTx_NoPrevATX(t *testing.T) {
731
726
PositioningATX : types.ATXID {1 , 2 , 3 },
732
727
CommitmentATX : nil ,
733
728
}
734
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
735
729
otherSigner , err := signing .NewEdSigner ()
736
730
require .NoError (t , err )
737
- posAtx := newAtx (challenge , nipostData . NIPost , 2 , types.Address {})
731
+ posAtx := newAtx (challenge , 2 , types.Address {})
738
732
require .NoError (t , SignAndFinalizeAtx (otherSigner , posAtx ))
739
733
vPosAtx , err := posAtx .Verify (0 , 1 )
740
734
require .NoError (t , err )
@@ -786,10 +780,9 @@ func TestBuilder_PublishActivationTx_NoPrevATX_PublishFails_InitialPost_preserve
786
780
PositioningATX : types.ATXID {1 , 2 , 3 },
787
781
CommitmentATX : nil ,
788
782
}
789
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
790
783
otherSigner , err := signing .NewEdSigner ()
791
784
require .NoError (t , err )
792
- posAtx := newAtx (challenge , nipostData . NIPost , 2 , types.Address {})
785
+ posAtx := newAtx (challenge , 2 , types.Address {})
793
786
require .NoError (t , SignAndFinalizeAtx (otherSigner , posAtx ))
794
787
vPosAtx , err := posAtx .Verify (0 , 1 )
795
788
require .NoError (t , err )
@@ -894,8 +887,7 @@ func TestBuilder_PublishActivationTx_PrevATXWithoutPrevATX(t *testing.T) {
894
887
CommitmentATX : & tab .goldenATXID ,
895
888
}
896
889
poetBytes := []byte ("66666" )
897
- nipostData := newNIPostWithPoet (t , poetBytes )
898
- posAtx := newAtx (challenge , nipostData .NIPost , 2 , types.Address {})
890
+ posAtx := newAtx (challenge , 2 , types.Address {})
899
891
require .NoError (t , SignAndFinalizeAtx (otherSigner , posAtx ))
900
892
vPosAtx , err := posAtx .Verify (0 , 2 )
901
893
r .NoError (err )
@@ -909,7 +901,7 @@ func TestBuilder_PublishActivationTx_PrevATXWithoutPrevATX(t *testing.T) {
909
901
CommitmentATX : nil ,
910
902
}
911
903
challenge .InitialPost = initialPost
912
- prevAtx := newAtx (challenge , nipostData . NIPost , 2 , types.Address {})
904
+ prevAtx := newAtx (challenge , 2 , types.Address {})
913
905
prevAtx .InitialPost = initialPost
914
906
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
915
907
vPrevAtx , err := prevAtx .Verify (0 , 1 )
@@ -956,31 +948,22 @@ func TestBuilder_PublishActivationTx_PrevATXWithoutPrevATX(t *testing.T) {
956
948
tab .mpub .EXPECT ().
957
949
Publish (gomock .Any (), gomock .Any (), gomock .Any ()).
958
950
DoAndReturn (func (ctx context.Context , _ string , msg []byte ) error {
959
- atx , err := wire .ActivationTxFromBytes (msg )
960
- require .NoError (t , err )
961
- atx .SetReceived (time .Now ().Local ())
962
-
963
- atx .SetEffectiveNumUnits (atx .NumUnits )
964
- vAtx , err := atx .Verify (0 , 1 )
965
- r .NoError (err )
966
- r .Equal (sig .NodeID (), vAtx .SmesherID )
967
-
968
- r .NoError (atxs .Add (tab .db , vAtx ))
951
+ var atx wire.ActivationTxV1
952
+ codec .MustDecode (msg , & atx )
969
953
954
+ r .Equal (sig .NodeID (), atx .SmesherID )
970
955
r .Equal (prevAtx .Sequence + 1 , atx .Sequence )
971
956
r .Equal (prevAtx .ID (), atx .PrevATXID )
972
957
r .Nil (atx .InitialPost )
973
- r .Nil (atx .CommitmentATX )
958
+ r .Nil (atx .CommitmentATXID )
974
959
r .Nil (atx .VRFNonce )
975
-
976
- r .Equal (posAtx .ID (), atx .PositioningATX )
960
+ r .Equal (posAtx .ID (), atx .PositioningATXID )
977
961
r .Equal (postAtxPubEpoch + 1 , atx .PublishEpoch )
978
- r .Equal (types .BytesToHash (poetBytes ), atx .GetPoetProofRef ())
979
-
962
+ r .Equal (poetBytes , atx .NIPost .PostMetadata .Challenge )
980
963
return nil
981
964
})
982
965
983
- tab .mnipost .EXPECT ().ResetState (sig .NodeID ()). Return ( nil )
966
+ tab .mnipost .EXPECT ().ResetState (sig .NodeID ())
984
967
985
968
r .NoError (tab .PublishActivationTx (context .Background (), sig ))
986
969
@@ -1009,8 +992,7 @@ func TestBuilder_PublishActivationTx_TargetsEpochBasedOnPosAtx(t *testing.T) {
1009
992
CommitmentATX : & types.ATXID {4 , 5 , 6 },
1010
993
}
1011
994
poetBytes := []byte ("66666" )
1012
- nipostData := newNIPostWithPoet (t , poetBytes )
1013
- posAtx := newAtx (challenge , nipostData .NIPost , 2 , types.Address {})
995
+ posAtx := newAtx (challenge , 2 , types.Address {})
1014
996
require .NoError (t , SignAndFinalizeAtx (otherSigner , posAtx ))
1015
997
vPosAtx , err := posAtx .Verify (0 , 1 )
1016
998
r .NoError (err )
@@ -1055,24 +1037,16 @@ func TestBuilder_PublishActivationTx_TargetsEpochBasedOnPosAtx(t *testing.T) {
1055
1037
tab .mpub .EXPECT ().
1056
1038
Publish (gomock .Any (), gomock .Any (), gomock .Any ()).
1057
1039
DoAndReturn (func (ctx context.Context , _ string , msg []byte ) error {
1058
- atx , err := wire .ActivationTxFromBytes (msg )
1059
- require .NoError (t , err )
1060
- atx .SetReceived (time .Now ().Local ())
1061
-
1062
- atx .SetEffectiveNumUnits (atx .NumUnits )
1063
- vAtx , err := atx .Verify (0 , 1 )
1064
- r .NoError (err )
1065
- r .Equal (sig .NodeID (), vAtx .SmesherID )
1066
-
1067
- r .NoError (atxs .Add (tab .db , vAtx ))
1040
+ var atx wire.ActivationTxV1
1041
+ codec .MustDecode (msg , & atx )
1068
1042
1043
+ r .Equal (sig .NodeID (), atx .SmesherID )
1069
1044
r .Zero (atx .Sequence )
1070
1045
r .Equal (types .EmptyATXID , atx .PrevATXID )
1071
1046
r .NotNil (atx .InitialPost )
1072
-
1073
- r .Equal (posAtx .ID (), atx .PositioningATX )
1047
+ r .Equal (posAtx .ID (), atx .PositioningATXID )
1074
1048
r .Equal (posEpoch + 1 , atx .PublishEpoch )
1075
- r .Equal (types . BytesToHash ( poetBytes ) , atx .GetPoetProofRef () )
1049
+ r .Equal (poetBytes , atx .NIPost . PostMetadata . Challenge )
1076
1050
1077
1051
return nil
1078
1052
})
@@ -1120,8 +1094,7 @@ func TestBuilder_PublishActivationTx_FailsWhenNIPostBuilderFails(t *testing.T) {
1120
1094
PositioningATX : types.ATXID {1 , 2 , 3 },
1121
1095
CommitmentATX : nil ,
1122
1096
}
1123
- nipostData := newNIPostWithPoet (t , []byte ("66666" ))
1124
- posAtx := newAtx (ch , nipostData .NIPost , 2 , types.Address {})
1097
+ posAtx := newAtx (ch , 2 , types.Address {})
1125
1098
require .NoError (t , SignAndFinalizeAtx (sig , posAtx ))
1126
1099
vPosAtx , err := posAtx .Verify (0 , 1 )
1127
1100
require .NoError (t , err )
@@ -1157,8 +1130,7 @@ func TestBuilder_SignAtx(t *testing.T) {
1157
1130
PositioningATX : prevAtx ,
1158
1131
CommitmentATX : nil ,
1159
1132
}
1160
- nipost := newNIPostWithPoet (t , []byte ("66666" ))
1161
- atx := newAtx (challenge , nipost .NIPost , 100 , types.Address {})
1133
+ atx := newAtx (challenge , 100 , types.Address {})
1162
1134
require .NoError (t , SignAndFinalizeAtx (sig , atx ))
1163
1135
1164
1136
msg := wire .ActivationTxToWireV1 (atx ).SignedBytes ()
@@ -1196,8 +1168,7 @@ func TestBuilder_RetryPublishActivationTx(t *testing.T) {
1196
1168
CommitmentATX : nil ,
1197
1169
}
1198
1170
poetBytes := []byte ("66666" )
1199
- nipostData := newNIPostWithPoet (t , poetBytes )
1200
- prevAtx := newAtx (challenge , nipostData .NIPost , 2 , types.Address {})
1171
+ prevAtx := newAtx (challenge , 2 , types.Address {})
1201
1172
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
1202
1173
vPrevAtx , err := prevAtx .Verify (0 , 1 )
1203
1174
require .NoError (t , err )
@@ -1354,9 +1325,7 @@ func TestBuilder_InitialProofGeneratedOnce(t *testing.T) {
1354
1325
PositioningATX : tab .goldenATXID ,
1355
1326
CommitmentATX : & tab .goldenATXID ,
1356
1327
}
1357
- poetByte := []byte ("66666" )
1358
- nipost := newNIPostWithPoet (t , poetByte )
1359
- prevAtx := newAtx (challenge , nipost .NIPost , 2 , types.Address {})
1328
+ prevAtx := newAtx (challenge , 2 , types.Address {})
1360
1329
require .NoError (t , SignAndFinalizeAtx (sig , prevAtx ))
1361
1330
vPrevAtx , err := prevAtx .Verify (0 , 1 )
1362
1331
require .NoError (t , err )
@@ -1375,7 +1344,6 @@ func TestBuilder_InitialProofGeneratedOnce(t *testing.T) {
1375
1344
require .Nil (t , atx .VRFNonce )
1376
1345
require .Equal (t , vPrevAtx .ID (), atx .PositioningATX )
1377
1346
require .Equal (t , vPrevAtx .PublishEpoch + 1 , atx .PublishEpoch )
1378
- require .Equal (t , types .BytesToHash (poetByte ), atx .GetPoetProofRef ())
1379
1347
1380
1348
// postClient.Proof() should not be called again
1381
1349
require .NoError (t , tab .buildInitialPost (context .Background (), sig .NodeID ()))
@@ -1579,28 +1547,21 @@ func TestGetPositioningAtxPicksAtxWithValidChain(t *testing.T) {
1579
1547
// Invalid chain with high height
1580
1548
sigInvalid , err := signing .NewEdSigner ()
1581
1549
require .NoError (t , err )
1582
- ch := types.NIPostChallenge {
1583
- Sequence : 1 ,
1584
- PrevATXID : types .EmptyATXID ,
1585
- PublishEpoch : postGenesisEpoch ,
1586
- PositioningATX : tab .goldenATXID ,
1587
- CommitmentATX : & tab .goldenATXID ,
1588
- }
1589
- nipostData := newNIPostWithPoet (t , []byte ("0" ))
1590
- invalidAtx := newAtx (ch , nipostData .NIPost , 2 , types.Address {})
1591
- require .NoError (t , SignAndFinalizeAtx (sigInvalid , invalidAtx ))
1592
- vInvalidAtx , err := invalidAtx .Verify (0 , 100 )
1550
+ invalidAtx := newInitialATXv1 (t , tab .goldenATXID )
1551
+ invalidAtx .Sign (sigInvalid )
1552
+ vInvalidAtx := toVerifiedAtx (t , invalidAtx )
1553
+ vInvalidAtx , err = vInvalidAtx .Verify (0 , 100 )
1593
1554
require .NoError (t , err )
1594
1555
require .NoError (t , atxs .Add (tab .db , vInvalidAtx ))
1595
1556
1596
1557
// Valid chain with lower height
1597
1558
sigValid , err := signing .NewEdSigner ()
1598
1559
require .NoError (t , err )
1599
- nipostData = newNIPostWithPoet (t , [] byte ( "1" ) )
1600
- validAtx := newAtx ( ch , nipostData . NIPost , 2 , types. Address {})
1601
- require . NoError ( t , SignAndFinalizeAtx ( sigValid , validAtx ) )
1602
- vValidAtx , err := validAtx . Verify ( 0 , 1 )
1603
- require . NoError ( t , err )
1560
+ validAtx := newInitialATXv1 (t , tab . goldenATXID )
1561
+ validAtx . NumUnits += 10
1562
+ validAtx . Sign ( sigValid )
1563
+ vValidAtx := toVerifiedAtx ( t , validAtx )
1564
+ vValidAtx . Verify ( 0 , 1 )
1604
1565
require .NoError (t , atxs .Add (tab .db , vValidAtx ))
1605
1566
1606
1567
tab .mValidator .EXPECT ().
0 commit comments