@@ -12,12 +12,15 @@ mod tests;
12
12
13
13
mod functions;
14
14
pub mod types;
15
+ pub mod weights;
16
+ use weights:: WeightInfo ;
15
17
16
18
#[ frame_support:: pallet]
17
19
pub mod pallet {
18
20
use frame_support:: pallet_prelude:: * ;
19
21
//#[cfg(feature = "std")]
20
22
//use frame_support::serde::{Deserialize, Serialize};
23
+ use super :: * ;
21
24
use crate :: types:: * ;
22
25
use frame_support:: { pallet_prelude:: BoundedVec , traits:: Get } ;
23
26
use frame_system:: {
@@ -89,6 +92,9 @@ pub mod pallet {
89
92
type OutputDescriptorMaxLen : Get < u32 > ;
90
93
#[ pallet:: constant]
91
94
type MaxProposalsPerVault : Get < u32 > ;
95
+
96
+ /// Weight information for extrinsics in this pallet.
97
+ type WeightInfo : WeightInfo ;
92
98
}
93
99
94
100
#[ pallet:: pallet]
@@ -350,7 +356,7 @@ pub mod pallet {
350
356
/// first and insert
351
357
/// a new one.
352
358
#[ pallet:: call_index( 1 ) ]
353
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get ( ) . writes ( 2 ) ) ]
359
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: set_xpub ( xpub . len ( ) as u32 ) ) ]
354
360
pub fn set_xpub ( origin : OriginFor < T > , xpub : BoundedVec < u8 , T :: XPubLen > ) -> DispatchResult {
355
361
// Check that the extrinsic was signed and get the signer.
356
362
let who = ensure_signed ( origin. clone ( ) ) ?;
@@ -392,7 +398,7 @@ pub mod pallet {
392
398
///
393
399
/// This tx does not takes any parameters.
394
400
#[ pallet:: call_index( 2 ) ]
395
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 2 ) ) ]
401
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: remove_xpub ( T :: XPubLen :: get ( ) , T :: VaultDescriptionMaxLen :: get ( ) , T :: MaxCosignersPerVault :: get( ) , T :: MaxVaultsPerUser :: get ( ) ) ) ]
396
402
pub fn remove_xpub ( origin : OriginFor < T > ) -> DispatchResult {
397
403
let who = ensure_signed ( origin. clone ( ) ) ?;
398
404
// The xpub must exists
@@ -432,7 +438,7 @@ pub mod pallet {
432
438
/// ### Considerations
433
439
/// - Do not include the vault owner on the `cosigners` list.
434
440
#[ pallet:: call_index( 3 ) ]
435
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 1 ) ) ]
441
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: create_vault ( T :: XPubLen :: get ( ) , description . len ( ) as u32 , cosigners . len ( ) as u32 , T :: MaxVaultsPerUser :: get( ) ) ) ]
436
442
pub fn create_vault (
437
443
origin : OriginFor < T > ,
438
444
threshold : u32 ,
@@ -481,7 +487,7 @@ pub mod pallet {
481
487
/// ### Considerations:
482
488
/// - Only the vault owner can perform this extrinsic
483
489
#[ pallet:: call_index( 4 ) ]
484
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 1 ) ) ]
490
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: remove_vault ( T :: XPubLen :: get ( ) , T :: VaultDescriptionMaxLen :: get ( ) , T :: MaxCosignersPerVault :: get ( ) , T :: MaxVaultsPerUser :: get( ) , T :: MaxProposalsPerVault :: get ( ) , T :: PSBTMaxLen :: get ( ) ) ) ]
485
491
pub fn remove_vault ( origin : OriginFor < T > , vault_id : [ u8 ; 32 ] ) -> DispatchResult {
486
492
let who = ensure_signed ( origin. clone ( ) ) ?;
487
493
@@ -501,7 +507,7 @@ pub mod pallet {
501
507
/// ### Considerations
502
508
/// - Please ensure the recipient address is a valid mainnet address.
503
509
#[ pallet:: call_index( 5 ) ]
504
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 1 ) ) ]
510
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: propose ( T :: XPubLen :: get ( ) , description . len ( ) as u32 , T :: MaxProposalsPerVault :: get( ) , T :: PSBTMaxLen :: get ( ) ) ) ]
505
511
pub fn propose (
506
512
origin : OriginFor < T > ,
507
513
vault_id : [ u8 ; 32 ] ,
@@ -536,7 +542,7 @@ pub mod pallet {
536
542
/// ### Parameters:
537
543
/// - `proposal_id`: the proposal identifier
538
544
#[ pallet:: call_index( 6 ) ]
539
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 1 ) ) ]
545
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: remove_proposal ( T :: XPubLen :: get ( ) , T :: VaultDescriptionMaxLen :: get ( ) , T :: MaxProposalsPerVault :: get( ) , T :: PSBTMaxLen :: get ( ) ) ) ]
540
546
pub fn remove_proposal ( origin : OriginFor < T > , proposal_id : [ u8 ; 32 ] ) -> DispatchResult {
541
547
let who = ensure_signed ( origin. clone ( ) ) ?;
542
548
let proposal = <Proposals < T > >:: get ( proposal_id) . ok_or ( Error :: < T > :: ProposalNotFound ) ?;
@@ -559,7 +565,7 @@ pub mod pallet {
559
565
/// - Ensure the new url is valid.
560
566
/// - The url has a maximum length of 32 bytes
561
567
#[ pallet:: call_index( 7 ) ]
562
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get ( ) . writes ( 1 ) ) ]
568
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: set_bdk_url ( new_url . len ( ) as u32 ) ) ]
563
569
pub fn set_bdk_url ( origin : OriginFor < T > , new_url : URL ) -> DispatchResult {
564
570
T :: ChangeBDKOrigin :: ensure_origin ( origin. clone ( ) ) ?;
565
571
<BDKServicesURL < T > >:: put ( new_url) ;
@@ -579,7 +585,7 @@ pub mod pallet {
579
585
/// - If successful, this process cannot be undone
580
586
/// - A user can only sign a proposal once
581
587
#[ pallet:: call_index( 8 ) ]
582
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 1 ) ) ]
588
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: save_psbt ( T :: MaxCosignersPerVault :: get( ) , signature_payload . len ( ) as u32 ) ) ]
583
589
pub fn save_psbt (
584
590
origin : OriginFor < T > ,
585
591
proposal_id : [ u8 ; 32 ] ,
@@ -603,7 +609,7 @@ pub mod pallet {
603
609
/// - The proposal must have a valid PSBT
604
610
/// - Any vault member can perform this extrinsic
605
611
#[ pallet:: call_index( 9 ) ]
606
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 1 ) ) ]
612
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: finalize_psbt ( T :: MaxCosignersPerVault :: get ( ) , T :: PSBTMaxLen :: get( ) ) ) ]
607
613
pub fn finalize_psbt (
608
614
origin : OriginFor < T > ,
609
615
proposal_id : [ u8 ; 32 ] ,
@@ -625,7 +631,7 @@ pub mod pallet {
625
631
/// - The proposal must be finalized already
626
632
/// - Any vault member can perform this extrinsic
627
633
#[ pallet:: call_index( 10 ) ]
628
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get( ) . writes ( 1 ) ) ]
634
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: broadcast_psbt ( T :: PSBTMaxLen :: get( ) ) ) ]
629
635
pub fn broadcast_psbt ( origin : OriginFor < T > , proposal_id : [ u8 ; 32 ] ) -> DispatchResult {
630
636
let who = ensure_signed ( origin. clone ( ) ) ?;
631
637
Self :: do_finalize_psbt ( who, proposal_id, true )
@@ -644,7 +650,7 @@ pub mod pallet {
644
650
/// - Any vault member can perform this extrinsic
645
651
/// - A vault can only have a PoR at a time.
646
652
#[ pallet:: call_index( 11 ) ]
647
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get ( ) . writes ( 1 ) ) ]
653
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: create_proof ( message . len ( ) as u32 , psbt . len ( ) as u32 ) ) ]
648
654
pub fn create_proof (
649
655
origin : OriginFor < T > ,
650
656
vault_id : [ u8 ; 32 ] ,
@@ -667,7 +673,7 @@ pub mod pallet {
667
673
/// - Any vault member can perform this extrinsic
668
674
/// - A vault signer can only sabe its PSBT once.
669
675
#[ pallet:: call_index( 12 ) ]
670
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get ( ) . writes ( 1 ) ) ]
676
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: save_proof_psbt ( psbt . len ( ) as u32 ) ) ]
671
677
pub fn save_proof_psbt (
672
678
origin : OriginFor < T > ,
673
679
vault_id : [ u8 ; 32 ] ,
@@ -689,7 +695,7 @@ pub mod pallet {
689
695
/// - Any vault member can perform this extrinsic
690
696
/// - A vault signer can only sabe its PSBT once.
691
697
#[ pallet:: call_index( 13 ) ]
692
- #[ pallet:: weight( Weight :: from_parts ( 10_000 , 0 ) + T :: DbWeight :: get ( ) . writes ( 1 ) ) ]
698
+ #[ pallet:: weight( < T as Config > :: WeightInfo :: finalize_proof ( psbt . len ( ) as u32 ) ) ]
693
699
pub fn finalize_proof (
694
700
origin : OriginFor < T > ,
695
701
vault_id : [ u8 ; 32 ] ,
0 commit comments