@@ -62,9 +62,14 @@ use namada_node::bench_utils::{
62
62
TX_BRIDGE_POOL_WASM , TX_IBC_WASM , TX_INIT_PROPOSAL_WASM , TX_RESIGN_STEWARD ,
63
63
TX_TRANSFER_WASM , TX_UPDATE_STEWARD_COMMISSION , TX_VOTE_PROPOSAL_WASM ,
64
64
} ;
65
- use namada_vp:: native_vp:: { Ctx , NativeVp } ;
65
+ use namada_vm:: wasm:: run:: VpEvalWasm ;
66
+ use namada_vm:: wasm:: VpCache ;
67
+ use namada_vp:: native_vp:: { self , NativeVp } ;
66
68
use rand_core:: OsRng ;
67
69
70
+ type Ctx < ' ctx , S , D , H , CA > =
71
+ native_vp:: Ctx < ' ctx , S , VpCache < CA > , VpEvalWasm < D , H , CA > > ;
72
+
68
73
fn governance ( c : & mut Criterion ) {
69
74
let mut group = c. benchmark_group ( "vp_governance" ) ;
70
75
@@ -215,7 +220,7 @@ fn governance(c: &mut Criterion) {
215
220
let gas_meter = RefCell :: new ( VpGasMeter :: new_from_tx_meter (
216
221
& TxGasMeter :: new ( u64:: MAX ) ,
217
222
) ) ;
218
- let governance = GovernanceVp :: new ( Ctx :: new (
223
+ let ctx = Ctx :: new (
219
224
& Address :: Internal ( InternalAddress :: Governance ) ,
220
225
& shell. state ,
221
226
& signed_tx. tx ,
@@ -225,18 +230,18 @@ fn governance(c: &mut Criterion) {
225
230
& keys_changed,
226
231
& verifiers,
227
232
shell. vp_wasm_cache . clone ( ) ,
228
- ) ) ;
233
+ ) ;
229
234
230
235
group. bench_function ( bench_name, |b| {
231
236
b. iter ( || {
232
237
assert ! (
233
- governance
234
- . validate_tx (
235
- & signed_tx. to_ref( ) ,
236
- governance . ctx. keys_changed,
237
- governance . ctx. verifiers,
238
- )
239
- . is_ok( )
238
+ GovernanceVp :: validate_tx (
239
+ & ctx ,
240
+ & signed_tx. to_ref( ) ,
241
+ ctx. keys_changed,
242
+ ctx. verifiers,
243
+ )
244
+ . is_ok( )
240
245
)
241
246
} )
242
247
} ) ;
@@ -508,7 +513,7 @@ fn vp_multitoken(c: &mut Criterion) {
508
513
let gas_meter = RefCell :: new ( VpGasMeter :: new_from_tx_meter (
509
514
& TxGasMeter :: new ( u64:: MAX ) ,
510
515
) ) ;
511
- let multitoken = MultitokenVp :: new ( Ctx :: new (
516
+ let ctx = Ctx :: new (
512
517
& Address :: Internal ( InternalAddress :: Multitoken ) ,
513
518
& shell. state ,
514
519
& signed_tx. tx ,
@@ -518,18 +523,18 @@ fn vp_multitoken(c: &mut Criterion) {
518
523
& keys_changed,
519
524
& verifiers,
520
525
shell. vp_wasm_cache . clone ( ) ,
521
- ) ) ;
526
+ ) ;
522
527
523
528
group. bench_function ( bench_name, |b| {
524
529
b. iter ( || {
525
530
assert ! (
526
- multitoken
527
- . validate_tx (
528
- & signed_tx. to_ref( ) ,
529
- multitoken . ctx. keys_changed,
530
- multitoken . ctx. verifiers,
531
- )
532
- . is_ok( )
531
+ MultitokenVp :: validate_tx (
532
+ & ctx ,
533
+ & signed_tx. to_ref( ) ,
534
+ ctx. keys_changed,
535
+ ctx. verifiers,
536
+ )
537
+ . is_ok( )
533
538
)
534
539
} )
535
540
} ) ;
@@ -629,7 +634,7 @@ fn masp(c: &mut Criterion) {
629
634
let gas_meter = RefCell :: new ( VpGasMeter :: new_from_tx_meter (
630
635
& TxGasMeter :: new ( u64:: MAX ) ,
631
636
) ) ;
632
- let masp = MaspVp :: new ( Ctx :: new (
637
+ let ctx = Ctx :: new (
633
638
& Address :: Internal ( InternalAddress :: Masp ) ,
634
639
& shell_read. state ,
635
640
& signed_tx. tx ,
@@ -639,14 +644,15 @@ fn masp(c: &mut Criterion) {
639
644
& keys_changed,
640
645
& verifiers,
641
646
shell_read. vp_wasm_cache . clone ( ) ,
642
- ) ) ;
647
+ ) ;
643
648
644
649
b. iter ( || {
645
650
assert ! (
646
- masp. validate_tx(
651
+ MaspVp :: validate_tx(
652
+ & ctx,
647
653
& signed_tx. to_ref( ) ,
648
- masp . ctx. keys_changed,
649
- masp . ctx. verifiers,
654
+ ctx. keys_changed,
655
+ ctx. verifiers,
650
656
)
651
657
. is_ok( )
652
658
) ;
@@ -1241,7 +1247,7 @@ fn pgf(c: &mut Criterion) {
1241
1247
let gas_meter = RefCell :: new ( VpGasMeter :: new_from_tx_meter (
1242
1248
& TxGasMeter :: new ( u64:: MAX ) ,
1243
1249
) ) ;
1244
- let pgf = PgfVp :: new ( Ctx :: new (
1250
+ let ctx = Ctx :: new (
1245
1251
& Address :: Internal ( InternalAddress :: Pgf ) ,
1246
1252
& shell. state ,
1247
1253
& signed_tx. tx ,
@@ -1251,15 +1257,16 @@ fn pgf(c: &mut Criterion) {
1251
1257
& keys_changed,
1252
1258
& verifiers,
1253
1259
shell. vp_wasm_cache . clone ( ) ,
1254
- ) ) ;
1260
+ ) ;
1255
1261
1256
1262
group. bench_function ( bench_name, |b| {
1257
1263
b. iter ( || {
1258
1264
assert ! (
1259
- pgf. validate_tx(
1265
+ PgfVp :: validate_tx(
1266
+ & ctx,
1260
1267
& signed_tx. to_ref( ) ,
1261
- pgf . ctx. keys_changed,
1262
- pgf . ctx. verifiers,
1268
+ ctx. keys_changed,
1269
+ ctx. verifiers,
1263
1270
)
1264
1271
. is_ok( )
1265
1272
)
@@ -1316,7 +1323,7 @@ fn eth_bridge_nut(c: &mut Criterion) {
1316
1323
Address :: Internal ( InternalAddress :: Nut ( native_erc20_addres) ) ;
1317
1324
let gas_meter =
1318
1325
RefCell :: new ( VpGasMeter :: new_from_tx_meter ( & TxGasMeter :: new ( u64:: MAX ) ) ) ;
1319
- let nut = EthBridgeNutVp :: new ( Ctx :: new (
1326
+ let ctx = Ctx :: new (
1320
1327
& vp_address,
1321
1328
& shell. state ,
1322
1329
& signed_tx. tx ,
@@ -1326,15 +1333,16 @@ fn eth_bridge_nut(c: &mut Criterion) {
1326
1333
& keys_changed,
1327
1334
& verifiers,
1328
1335
shell. vp_wasm_cache . clone ( ) ,
1329
- ) ) ;
1336
+ ) ;
1330
1337
1331
1338
c. bench_function ( "vp_eth_bridge_nut" , |b| {
1332
1339
b. iter ( || {
1333
1340
assert ! (
1334
- nut. validate_tx(
1341
+ EthBridgeNutVp :: validate_tx(
1342
+ & ctx,
1335
1343
& signed_tx. to_ref( ) ,
1336
- nut . ctx. keys_changed,
1337
- nut . ctx. verifiers,
1344
+ ctx. keys_changed,
1345
+ ctx. verifiers,
1338
1346
)
1339
1347
. is_ok( )
1340
1348
)
@@ -1387,7 +1395,7 @@ fn eth_bridge(c: &mut Criterion) {
1387
1395
let vp_address = Address :: Internal ( InternalAddress :: EthBridge ) ;
1388
1396
let gas_meter =
1389
1397
RefCell :: new ( VpGasMeter :: new_from_tx_meter ( & TxGasMeter :: new ( u64:: MAX ) ) ) ;
1390
- let eth_bridge = EthBridgeVp :: new ( Ctx :: new (
1398
+ let ctx = Ctx :: new (
1391
1399
& vp_address,
1392
1400
& shell. state ,
1393
1401
& signed_tx. tx ,
@@ -1397,18 +1405,18 @@ fn eth_bridge(c: &mut Criterion) {
1397
1405
& keys_changed,
1398
1406
& verifiers,
1399
1407
shell. vp_wasm_cache . clone ( ) ,
1400
- ) ) ;
1408
+ ) ;
1401
1409
1402
1410
c. bench_function ( "vp_eth_bridge" , |b| {
1403
1411
b. iter ( || {
1404
1412
assert ! (
1405
- eth_bridge
1406
- . validate_tx (
1407
- & signed_tx. to_ref( ) ,
1408
- eth_bridge . ctx. keys_changed,
1409
- eth_bridge . ctx. verifiers,
1410
- )
1411
- . is_ok( )
1413
+ EthBridgeVp :: validate_tx (
1414
+ & ctx ,
1415
+ & signed_tx. to_ref( ) ,
1416
+ ctx. keys_changed,
1417
+ ctx. verifiers,
1418
+ )
1419
+ . is_ok( )
1412
1420
)
1413
1421
} )
1414
1422
} ) ;
@@ -1484,7 +1492,7 @@ fn eth_bridge_pool(c: &mut Criterion) {
1484
1492
let vp_address = Address :: Internal ( InternalAddress :: EthBridgePool ) ;
1485
1493
let gas_meter =
1486
1494
RefCell :: new ( VpGasMeter :: new_from_tx_meter ( & TxGasMeter :: new ( u64:: MAX ) ) ) ;
1487
- let bridge_pool = EthBridgePoolVp :: new ( Ctx :: new (
1495
+ let ctx = Ctx :: new (
1488
1496
& vp_address,
1489
1497
& shell. state ,
1490
1498
& signed_tx. tx ,
@@ -1494,18 +1502,18 @@ fn eth_bridge_pool(c: &mut Criterion) {
1494
1502
& keys_changed,
1495
1503
& verifiers,
1496
1504
shell. vp_wasm_cache . clone ( ) ,
1497
- ) ) ;
1505
+ ) ;
1498
1506
1499
1507
c. bench_function ( "vp_eth_bridge_pool" , |b| {
1500
1508
b. iter ( || {
1501
1509
assert ! (
1502
- bridge_pool
1503
- . validate_tx (
1504
- & signed_tx. to_ref( ) ,
1505
- bridge_pool . ctx. keys_changed,
1506
- bridge_pool . ctx. verifiers,
1507
- )
1508
- . is_ok( )
1510
+ EthBridgePoolVp :: validate_tx (
1511
+ & ctx ,
1512
+ & signed_tx. to_ref( ) ,
1513
+ ctx. keys_changed,
1514
+ ctx. verifiers,
1515
+ )
1516
+ . is_ok( )
1509
1517
)
1510
1518
} )
1511
1519
} ) ;
@@ -1557,7 +1565,7 @@ fn parameters(c: &mut Criterion) {
1557
1565
let gas_meter = RefCell :: new ( VpGasMeter :: new_from_tx_meter (
1558
1566
& TxGasMeter :: new ( u64:: MAX ) ,
1559
1567
) ) ;
1560
- let parameters = ParametersVp :: new ( Ctx :: new (
1568
+ let ctx = Ctx :: new (
1561
1569
& vp_address,
1562
1570
& shell. state ,
1563
1571
& signed_tx. tx ,
@@ -1567,18 +1575,18 @@ fn parameters(c: &mut Criterion) {
1567
1575
& keys_changed,
1568
1576
& verifiers,
1569
1577
shell. vp_wasm_cache . clone ( ) ,
1570
- ) ) ;
1578
+ ) ;
1571
1579
1572
1580
group. bench_function ( bench_name, |b| {
1573
1581
b. iter ( || {
1574
1582
assert ! (
1575
- parameters
1576
- . validate_tx (
1577
- & signed_tx. to_ref( ) ,
1578
- parameters . ctx. keys_changed,
1579
- parameters . ctx. verifiers,
1580
- )
1581
- . is_ok( )
1583
+ ParametersVp :: validate_tx (
1584
+ & ctx ,
1585
+ & signed_tx. to_ref( ) ,
1586
+ ctx. keys_changed,
1587
+ ctx. verifiers,
1588
+ )
1589
+ . is_ok( )
1582
1590
)
1583
1591
} )
1584
1592
} ) ;
@@ -1633,7 +1641,7 @@ fn pos(c: &mut Criterion) {
1633
1641
let gas_meter = RefCell :: new ( VpGasMeter :: new_from_tx_meter (
1634
1642
& TxGasMeter :: new ( u64:: MAX ) ,
1635
1643
) ) ;
1636
- let pos = PosVp :: new ( Ctx :: new (
1644
+ let ctx = Ctx :: new (
1637
1645
& vp_address,
1638
1646
& shell. state ,
1639
1647
& signed_tx. tx ,
@@ -1643,15 +1651,16 @@ fn pos(c: &mut Criterion) {
1643
1651
& keys_changed,
1644
1652
& verifiers,
1645
1653
shell. vp_wasm_cache . clone ( ) ,
1646
- ) ) ;
1654
+ ) ;
1647
1655
1648
1656
group. bench_function ( bench_name, |b| {
1649
1657
b. iter ( || {
1650
1658
assert ! (
1651
- pos. validate_tx(
1659
+ PosVp :: validate_tx(
1660
+ & ctx,
1652
1661
& signed_tx. to_ref( ) ,
1653
- pos . ctx. keys_changed,
1654
- pos . ctx. verifiers,
1662
+ ctx. keys_changed,
1663
+ ctx. verifiers,
1655
1664
)
1656
1665
. is_ok( )
1657
1666
)
0 commit comments