Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Billing refactor #992

Merged
merged 83 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
b5538c3
refactor: remove-is-next-author
sameh-farouk Jul 18, 2024
5c2acbd
initial balance lock fix
sameh-farouk Jul 19, 2024
4754d5a
temp changes to decide later
sameh-farouk Jul 24, 2024
d8737af
wip
sameh-farouk Jul 28, 2024
36b7984
refactor-billing-logic
sameh-farouk Jul 30, 2024
150f006
handle grace for node contracts under rent-contract
sameh-farouk Jul 30, 2024
dc2a341
fix tests
sameh-farouk Jul 30, 2024
bd2331d
Adjust other tests
sameh-farouk Jul 31, 2024
2094436
fix benchmarks
sameh-farouk Jul 31, 2024
2274df4
claen up the code a bit
sameh-farouk Aug 1, 2024
ded7466
Fix cost of certified capacity
sameh-farouk Aug 2, 2024
47f1b72
Adjust benchmarking
sameh-farouk Aug 2, 2024
14cd8ed
clean comments
sameh-farouk Aug 2, 2024
3dcc930
define a custom SignedExtension for bill_contract_for_block
sameh-farouk Aug 13, 2024
77b3b4a
Adjusting some logs
sameh-farouk Aug 13, 2024
6564009
Adjust logs
sameh-farouk Aug 13, 2024
f5acea5
Add new billing events to go client
sameh-farouk Aug 13, 2024
7d03ead
Add comments
sameh-farouk Aug 14, 2024
6d60e78
fmt: format code
sameh-farouk Aug 14, 2024
a94a7da
Update comment
sameh-farouk Aug 14, 2024
38842d6
chore: update benchmark `weights.rs` file for all pallets
github-actions[bot] Aug 14, 2024
b237b6b
Fix typo
sameh-farouk Aug 15, 2024
4422f08
Extract is_validator into a function
sameh-farouk Aug 15, 2024
7de554d
Merge branch 'development-contracts-billing-refactor' of https://gith…
sameh-farouk Aug 15, 2024
a64f5b7
Change partial_billed_amount to partially_billed_amount
sameh-farouk Aug 15, 2024
0c3f136
fix govet linter
sameh-farouk Aug 15, 2024
cb10db5
fix typo
sameh-farouk Aug 18, 2024
348cfb9
fix typos
sameh-farouk Aug 18, 2024
72d2202
Correct naming convention for ContractPaymentState API
sameh-farouk Aug 18, 2024
44279ff
change ContractPaymentOverdrawn event's field name
sameh-farouk Aug 18, 2024
f8a2073
fix json in contract_events
sameh-farouk Aug 18, 2024
2180827
make ContractPaymentOverdrawn.overdraft represnt new overdrawn amount…
sameh-farouk Aug 18, 2024
4b2d2b0
change transfer_reserved to fail if cant repatriate reserved
sameh-farouk Aug 18, 2024
09cbdd7
Add new ADR
sameh-farouk Aug 18, 2024
e07e8cd
adding unit tests for ContractPaymentState methods
sameh-farouk Aug 18, 2024
f082a8c
fix integration tests
sameh-farouk Aug 18, 2024
927a599
fix ADR formating
sameh-farouk Aug 18, 2024
56a970e
rename has_reserved_amount() to has_reserve()
sameh-farouk Aug 18, 2024
a1af14a
Hardening transfer_reserved
sameh-farouk Aug 18, 2024
ebd6471
Adjsut tests for transfer_reserved changes (slash and deposit events)
sameh-farouk Aug 18, 2024
e200715
Fix cycles count
sameh-farouk Aug 18, 2024
544cbf1
rename some tests
sameh-farouk Aug 18, 2024
d824e59
Add more cases to test_settle_partial_overdraft untit test
sameh-farouk Aug 19, 2024
ba1d0aa
Use EXISTENTIAL_DEPOSIT const inplace of the value
sameh-farouk Aug 19, 2024
6b58587
rename get_reserved to get_reserve
sameh-farouk Aug 19, 2024
8032c96
Use EXISTENTIAL_DEPOSIT const inplace of the value
sameh-farouk Aug 19, 2024
af76619
Optimize transfer_reserved to reduce overhead and improve efficiency
sameh-farouk Aug 20, 2024
7cb0e3e
Add a test to verify that unbilled NU usage is reset when billing a c…
sameh-farouk Aug 20, 2024
0276f86
fix typo
sameh-farouk Aug 20, 2024
74c42bb
update validate_distribution_rewards and resduce duplicated code in t…
sameh-farouk Aug 20, 2024
2d9d644
Remove duplicated code
sameh-farouk Aug 20, 2024
09867df
write payment_state to storage early during migration
sameh-farouk Aug 21, 2024
2af204e
Add new tests and remove obsolete ones
sameh-farouk Aug 21, 2024
154b10f
Write contract payment state to storage during migration
sameh-farouk Aug 21, 2024
3ac6381
replace the lazy migration with a regular storage migration
sameh-farouk Aug 21, 2024
04fd0e7
Update pallet smart contract migration v12
sameh-farouk Aug 21, 2024
37d41db
make sure reservation works if a lock exists on user balance
sameh-farouk Aug 22, 2024
145c577
Avoid unnecessary recalculation of reservable balance
sameh-farouk Aug 22, 2024
9abeb0c
add more logs in billing and defensive check
sameh-farouk Aug 22, 2024
eea2376
fmt: just formating
sameh-farouk Aug 22, 2024
9d51049
fix typos
sameh-farouk Aug 22, 2024
247bc45
rename few functions to make code easier to understand
sameh-farouk Aug 22, 2024
b00b9dd
Ensure advancement of billing cycles in tests is more consistent
sameh-farouk Aug 23, 2024
71e2663
chore: update benchmark `weights.rs` file for all pallets
github-actions[bot] Aug 23, 2024
7361e66
Adjust the distribution of utilization revenue
sameh-farouk Aug 25, 2024
83ccaa4
Adjust imports for polkadot-sdk v1.1.0
sameh-farouk Aug 26, 2024
4251895
Removing solution provider integration test
sameh-farouk Aug 26, 2024
2df78b4
chore: update benchmark `weights.rs` file for all pallets
github-actions[bot] Aug 26, 2024
bfbe519
Merge branch 'development' into development-contracts-billing-refactor
sameh-farouk Aug 26, 2024
b443114
chore: update benchmark `weights.rs` file for all pallets
github-actions[bot] Aug 26, 2024
db42dce
Fixing a typo and adding a comment for clarity
sameh-farouk Aug 26, 2024
c62a30f
Leaving the solution provider test for now and just removing the bill…
sameh-farouk Aug 26, 2024
24e3ac9
Merge branch 'development-contracts-billing-refactor' of https://gith…
sameh-farouk Aug 26, 2024
8585901
chore: update benchmark `weights.rs` file for all pallets
github-actions[bot] Aug 26, 2024
efd76af
Switch storageKind from ValueQuery to OptionQuery for ContractPayment…
sameh-farouk Aug 26, 2024
e19934a
Minor refactor for the smart contract pallet storage migration v12
sameh-farouk Aug 26, 2024
dea3dc5
Improve the migration performance
sameh-farouk Aug 27, 2024
0a52b08
Merge branch 'development-contracts-billing-refactor' of https://gith…
sameh-farouk Aug 27, 2024
deee291
Fix benchmarks
sameh-farouk Aug 27, 2024
4a51902
Avoiding unwrap
sameh-farouk Aug 27, 2024
d48619b
Adding ContractPaymentStateNotExists error to tfchain client
sameh-farouk Aug 27, 2024
24b712f
Weights correction in smart-contract-pallet v12 migration
sameh-farouk Aug 27, 2024
b70501f
chore: update benchmark `weights.rs` file for all pallets
github-actions[bot] Aug 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,11 @@ impl<T: Config> Pallet<T> {
(None, None)
};

let mut contract_payment_state = ContractPaymentState::<T>::get(contract.contract_id).unwrap();
let mut contract_payment_state = ContractPaymentState::<T>::get(contract.contract_id).ok_or_else(|| {
log::error!("Contract payment state not exists for contract_id {}", contract_id);
Error::<T>::ContractPaymentStateNotExists
})?;

log::trace!(
"Contract payment state [before billing]: {:?}",
contract_payment_state
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,10 @@ impl<T: Config> ChangeNode<LocationOf<T>, InterfaceOf<T>, SerialNumberOf<T>> for
let node_power = pallet_tfgrid::NodePower::<T>::get(node.id);
if !node_power.is_standby() {
if let Some(rc_id) = ActiveRentContractForNode::<T>::get(node.id) {
let mut contract_payment_state = ContractPaymentState::<T>::get(rc_id).unwrap();
let Some(mut contract_payment_state) = ContractPaymentState::<T>::get(rc_id) else {
log::warn!("Contract payment state not exists for contract_id {}", rc_id);
return;
};
let now = Self::get_current_timestamp_in_secs();
contract_payment_state.last_updated_seconds = now;
ContractPaymentState::<T>::insert(rc_id, &contract_payment_state);
Expand Down
1 change: 1 addition & 0 deletions substrate-node/pallets/pallet-smart-contract/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,7 @@ pub mod pallet {
UnauthorizedToChangeSolutionProviderId,
UnauthorizedToSetExtraFee,
RewardDistributionError,
ContractPaymentStateNotExists,
sameh-farouk marked this conversation as resolved.
Show resolved Hide resolved
}

#[pallet::genesis_config]
Expand Down
Loading