Comportement actuel des frais

J’ai ajouté un test d’intégration sur les frais, lui aussi dit que les frais sont de 2.

/// test currency transfer with extrinsic
// the signer account should pay fees and a tip
// the treasury should get the fees
#[test]
fn test_transfer_xt() {
    ExtBuilder::new(1, 3, 4)
        .with_initial_balances(vec![
            (AccountKeyring::Alice.to_account_id(), 10_000),
            (AccountKeyring::Eve.to_account_id(), 10_000),
        ])
        .build()
        .execute_with(|| {
            let call = RuntimeCall::Balances(BalancesCall::transfer_allow_death {
                dest: AccountKeyring::Eve.to_account_id().into(),
                value: 500,
            });

            // 1 cĞD of tip
            let xt = get_unchecked_extrinsic(call, 4u64, 8u64, AccountKeyring::Alice, 1u64);
            let info = xt.get_dispatch_info();
            println!("dispatch info:\n\t {:?}\n", info);

            // nothing in treasury at start
            // FIXME treasury is initialized at ED
            assert_eq!(Balances::free_balance(Treasury::account_id()), 200);
            // Alice gives 500 to Eve
            assert_ok!(Executive::apply_extrinsic(xt));
            // check amounts
            assert_eq!(
                Balances::free_balance(AccountKeyring::Alice.to_account_id()),
                10_000 - 500 - 3 // initial - transfered - fees
            );
            assert_eq!(
                Balances::free_balance(AccountKeyring::Eve.to_account_id()),
                10_000 + 500 // initial + transfered
            );
            assert_eq!(Balances::free_balance(Treasury::account_id()), 203);
        })
}

J’ai mis du temps à y arriver parce que j’avais initialisé la trésorerie à zéro et que donc il ne pouvait pas recevoir les frais parce qu’il était en dessous du dépôt existentiel (cf Soldes des comptes au genesis v2 - #7 by HugoTrentesaux). Donc j’ai lu de long en large le code de substrate sur l’exécution d’un extrinsic (pallet-executive et primitives associées) et le paiement des frais de transaction (pallet-transaction-payment et toute la mécanique du imbalance…). Bref c’était long ><

Par contre, le test manuel donne toujours la même chose :

Et la trésorerie était dans tous les cas initialisée à 2 ĞD, il y a un conflit entre balances et duniter-account je crois.

image