@@ -347,7 +347,7 @@ func TestPrepareEvalParams(t *testing.T) {
347347 }
348348
349349 params := []config.ConsensusParams {
350- config. ConsensusParams {Application : true , MaxAppProgramCost : 700 },
350+ {Application : true , MaxAppProgramCost : 700 },
351351 config .Consensus [protocol .ConsensusV29 ],
352352 config .Consensus [protocol .ConsensusFuture ],
353353 }
@@ -856,7 +856,9 @@ func TestCowCompactCert(t *testing.T) {
856856 blocks := make (map [basics.Round ]bookkeeping.BlockHeader )
857857 blockErr := make (map [basics.Round ]error )
858858 ml := mockLedger {balanceMap : accts0 , blocks : blocks , blockErr : blockErr }
859- c0 := makeRoundCowState (& ml , bookkeeping.BlockHeader {}, 0 , 0 )
859+ c0 := makeRoundCowState (
860+ & ml , bookkeeping.BlockHeader {}, config .Consensus [protocol .ConsensusCurrentVersion ],
861+ 0 , 0 )
860862
861863 certType = protocol .CompactCertType (1234 ) // bad cert type
862864 err := c0 .compactCert (certRnd , certType , cert , atRound , validate )
@@ -1402,3 +1404,100 @@ func TestModifiedAppLocalStates(t *testing.T) {
14021404 assert .False (t , created )
14031405 }
14041406}
1407+
1408+ // Test that overriding the consensus parameters effects the generated apply data.
1409+ func TestCustomProtocolParams (t * testing.T ) {
1410+ partitiontest .PartitionTest (t )
1411+
1412+ genesisBalances , addrs , _ := newTestGenesis ()
1413+
1414+ var genHash crypto.Digest
1415+ crypto .RandBytes (genHash [:])
1416+ block , err := bookkeeping .MakeGenesisBlock (protocol .ConsensusV24 ,
1417+ genesisBalances , "test" , genHash )
1418+
1419+ dbName := fmt .Sprintf ("%s" , t .Name ())
1420+ cfg := config .GetDefaultLocal ()
1421+ cfg .Archival = true
1422+ l , err := OpenLedger (logging .Base (), dbName , true , InitState {
1423+ Block : block ,
1424+ Accounts : genesisBalances .Balances ,
1425+ GenesisHash : genHash ,
1426+ }, cfg )
1427+ require .NoError (t , err )
1428+ defer l .Close ()
1429+
1430+ const assetid basics.AssetIndex = 1
1431+ proto := config .Consensus [protocol .ConsensusV24 ]
1432+
1433+ block = bookkeeping .MakeBlock (block .BlockHeader )
1434+
1435+ createTxn := txntest.Txn {
1436+ Type : "acfg" ,
1437+ Sender : addrs [0 ],
1438+ GenesisHash : block .GenesisHash (),
1439+ AssetParams : basics.AssetParams {
1440+ Total : 200 ,
1441+ Decimals : 0 ,
1442+ Manager : addrs [0 ],
1443+ Reserve : addrs [0 ],
1444+ Freeze : addrs [0 ],
1445+ Clawback : addrs [0 ],
1446+ },
1447+ }
1448+ createTxn .FillDefaults (proto )
1449+ createStib , err := block .BlockHeader .EncodeSignedTxn (
1450+ createTxn .SignedTxn (), transactions.ApplyData {})
1451+ require .NoError (t , err )
1452+
1453+ optInTxn := txntest.Txn {
1454+ Type : "axfer" ,
1455+ Sender : addrs [1 ],
1456+ GenesisHash : block .GenesisHash (),
1457+ XferAsset : assetid ,
1458+ AssetAmount : 0 ,
1459+ AssetReceiver : addrs [1 ],
1460+ }
1461+ optInTxn .FillDefaults (proto )
1462+ optInStib , err := block .BlockHeader .EncodeSignedTxn (
1463+ optInTxn .SignedTxn (), transactions.ApplyData {})
1464+ require .NoError (t , err )
1465+
1466+ fundTxn := txntest.Txn {
1467+ Type : "axfer" ,
1468+ Sender : addrs [0 ],
1469+ GenesisHash : block .GenesisHash (),
1470+ XferAsset : assetid ,
1471+ AssetAmount : 100 ,
1472+ AssetReceiver : addrs [1 ],
1473+ }
1474+ fundTxn .FillDefaults (proto )
1475+ fundStib , err := block .BlockHeader .EncodeSignedTxn (
1476+ fundTxn .SignedTxn (), transactions.ApplyData {})
1477+ require .NoError (t , err )
1478+
1479+ optOutTxn := txntest.Txn {
1480+ Type : "axfer" ,
1481+ Sender : addrs [1 ],
1482+ GenesisHash : block .GenesisHash (),
1483+ XferAsset : assetid ,
1484+ AssetAmount : 30 ,
1485+ AssetReceiver : addrs [0 ],
1486+ AssetCloseTo : addrs [0 ],
1487+ }
1488+ optOutTxn .FillDefaults (proto )
1489+ optOutStib , err := block .BlockHeader .EncodeSignedTxn (
1490+ optOutTxn .SignedTxn (), transactions.ApplyData {})
1491+ require .NoError (t , err )
1492+
1493+ block .Payset = []transactions.SignedTxnInBlock {
1494+ createStib , optInStib , fundStib , optOutStib ,
1495+ }
1496+
1497+ proto .EnableAssetCloseAmount = true
1498+ _ , modifiedTxns , err := Eval (l , & block , proto )
1499+ require .NoError (t , err )
1500+
1501+ require .Equal (t , 4 , len (modifiedTxns ))
1502+ assert .Equal (t , uint64 (70 ), modifiedTxns [3 ].AssetClosingAmount )
1503+ }
0 commit comments