Back to Whitelisted Caller
Executed

#457 Fix TotalIssuance

Proposer:
Ea6j...taKR
 
in Democracy
23rd Sep '24

Fixing The Total Issuance

TLDR: A historic bug caused the Total Issuance tracking to deviate from the actual Issuance. I propose a whitelisted call to re-align them. The underlying issue has already been resolved.

There was an issue discovered on Kusama that the sum of all accounts' balances does not match the Total Issuance stored in pallet-balances. This is a serious issue, since third parties rely on its accuracy for tracking the total amount of existing tokens. The underlying problem was fixed by #1222 and #3707. The TI has not drifted further, but the same problem is present on Polkadot.

The Difference

First, it is necessary to measure the exact drift between the expected and the actual Total Issuance. This can be done by querying a node at a fixed block height. Two things have to be queried: all account entries and the TI variable from the balances pallet.
Conveniently, this script does both. The exact numbers were determined by running these commands against a Kusama archive RPC:

python3 check-ti-complete.py --url <RPC> block --trace 24407008
python3 check-ti-complete.py --url <RPC> block --trace 23780225

:::spoiler

git clone https://github.com/ggwpez/substrate-scripts
# Setup local Python env
python3 -m venv venv
venv/bin/pip install substrate-interface
venv/bin/python3 check-ti-complete.py --url wss://rpc.ibp.network/kusama block 23780225 --trace

:::

Console output from both commands:

[24407008] The TotalIssuance is larger than the sum of all accounts TI. TI: 15,311,516.288236268 KSM, Sum: 15,311,459.956873074 KSM
[24407008] TI must be decreased by 15311516288236268206 - 15311459956873073389 = 56331363194817 (56.331363194817 KSM)

[23780225] The TotalIssuance is larger than the sum of all accounts TI. TI: 15,131,305.14570446 KSM, Sum: 15,131,248.814341264 KSM
[23780225] TI must be decreased by 15131305145704458736 - 15131248814341263919 = 56331363194817 (56.331363194817 KSM)

The JSON output in the file blocks-ti.json tells us the resulting numbers:

{"block": 24407008, "sum": 15311459956873073389, "ti": 15311516288236268206, "runtime": "Parity Polkadot", "diff": 56331363194817}
{"block": 23780225, "sum": 15131248814341263919, "ti": 15131305145704458736, "runtime": "Parity Polkadot", "diff": 56331363194817}

This means that the difference is now stable since the last runtime upgrade that was 626,783 blocks ago.
The diff field shows shows the exact difference in planks: 56331363194817. The TI is larger than the sum; we therefore need to decrease the TI by that amount.

Referendum

The call to fix this is pallet-balances::force_adjust_total_issuance:

fn force_adjust_total_issuance(
	direction: AdjustmentDirection,
	#[pallet::compact] delta: T::Balance,
)

AdjustmentDirection can be either Increase or Decrease. This can be used to correct the TI to be re-aligned with the actual sum of all accounts' balances.

The final call is 0x0409010bc197e4aa3b33:

Screenshot 2024-08-09 at 17.07.56

A similar post and referendum for Polkadot will follow once it was executed correctly on Kusama.

Show More

Proposal Passed

of 3

Summary
Passed
100.0%Aye
AyeNay
0.0%Nay
Ayes(73)
552.71K KSM
Nays(2)
10.20 KSM
Support
892.44K KSM
Voting Details
Approval0.00%Threshold0.00%
Support0.00%Threshold0.00%
Please Log In to comment
2Comments
0%
0%
100%
0%
0%
JFAr...nYVt
 
 
24th Sep '24
(Edited)

This Referendum decreases total issuance by ~56 KSM. It does not have any impact on any individual account.

This is fixing total issuance due to a bug where some early killed accounts did not update total issuance even though the DOT/KSM were destroyed. See

https://github.com/polkadot-fellows/runtimes/issues/147 

for details.

 

Hide replies
GyfZ...nitA
 
 
24th Sep '24

@Bill Yes exactly, thanks for jumping in. The public post is here: 

https://hackmd.io/0yZtRVuDQva4T509lUwkVQ?edit

JFAr...nYVt
 
 
24th Sep '24

Detailed contextual information is available on Subsquare — 

https://kusama.subsquare.io/referenda/457 


Discover similar proposals


#508
EJgd...JGQZ

Remove Gabe from the fellowship

Members of the Fellowship Collective involved in projects flagged by the OG tracker should provide a proper explanation, return the funds to the Treasury, or face expulsion.

See More

24th Mar '25

Fellowship Admin

Fellowship Admin

#508 Remove Gabe from the fellowship
EJgd...JGQZ
24th Mar '25

Members of the Fellowship Collective involved in projects flagged by the OG tracker should provide a proper explanation, return the funds to the Treasury, or face expulsion.

Invarch failed to provide the first two, so Gabe, a founding member of the team, does not meet the ethical standards required to have a voice in the Fellowship.

TENETS (extract from the fellowship manifesto)

"Members are expected to faithfully uphold the following tenets.
Clarifications to the rules should be in agreement with these tenets. Acting in clear breach of these tenets may be considered by voters as grounds for non-promotion, demotion or, in extreme cases, exclusion from the Fellowship.


(1) Sincerely uphold the interests of Polkadot and avoid actions which clearly work against it.
(2) Respect the philosophy and principles of Polkadot.
(3) Respect the operational procedures, norms and voting conventions of the Fellowship.
(4) Respect your fellow Members and the wider community"

See More

#509
E5qF...tqrg
Deciding

KSM RFP #1 - Shielded Kusama Hub Transfers - $50k Total Prize!

See More

24th Mar '25
64%

Treasurer

Treasurer

#509 KSM RFP #1 - Shielded Kusama Hub Transfers - $50k Total Prize!
E5qF...tqrg
24th Mar '25
64%

This RFP was adapted over several weeks on AAG to turn a treasury proposal in discussion to an RFP with refined scope and oversight.

To apply for the prize pls fill out this form.  


Prize Pool: $43,000
Finder’s Fee: $2,000 **
Supervisors: $5,000

Supervisors (Bounty Curators)

  • Flipchan
  • Byte (Erin)
  • James Slusser

Excess or unused funds will be returned to the treasury by Bounty Curators.

Timeline

Monday, March 17 - AAG Discussion & this forum post! ✅
Monday, March 24 - Single-ref Bounty + Curators ✅
4 Weeks after Bounty Funding - Submission Deadline Thursday
July 31 - Project Completion (Pending Kusama Hub Launch)

Project Scope

Smart Contract Development

  • A Solidity-based smart contract deployed on Kusama Hub
  • ZK enabled for private deposits & withdrawals
  • Compatibility with all Kusama Hub assets

User Interface

  • Browser-based, mobile-ready UI hosted on IPFS
  • Support for: Deposits, Withdrawals, Transfers, XCM Transfers
  • Compatible with popular ecosystem wallets (Nova Wallet, Talisman, Subwallet)

Anti-correlation Attack Mitigations:

  • Fixed deposit amounts (e.g. 1, 10, 100, 1000 units)
  • Batch payouts for withdrawals to multiple users
    Interoperability
  • Ability to receive assets via XCM from any Kusama-connected parachain and transfer them to Kusama Hub for use in shielded pool.

Open-Source Delivery

  • All code (smart contracts and UI) published under the MIT license
  • Publicly accessible repositories Project updates shared transparently via Polkassembly, Subsquare, or Polkadot Forum from Team with Milestone deliveries
  • Developer & User documentation

Milestones

Milestone 1, Initial Pools & Basic UI:
$16,200 USD
1 month

  1. Tests - Smart contract test
  2. Smart contract - ZK shielded smart contract with KSM and multi asset support on Westend or Paseo
  3. Basic UI - A basic UI for interacting with the smart contract

Milestone 2, UI + XCM:
$9,900
1 month

  1. Tests - tests for all features
  2. User interface design - UI design
  3. XCM transfers - XCM transfer assets in UI
  4. Fixed amount transfer only - Allow fixed amount transfers in the UI

Milestone 3, Mainnet Deployment:
$16,900
1 - 1.5 months

  1. Contract Migration to Kusama Assethub - Migrate contract from Testnet to Kusama Hub
  2. Public documentation - Documentation for using Kusama shield and developer integration documentation
  3. Test - tests for contract
  4. V1 UI - User tested & something we can be proud of

** re: Finder’s Fee: this payment is set aside to incentivize a broad search for the right implementor. Finder’s Fees are paid out at time of team engagement. Teams that submit themselves can collect their own Finder’s Fee at completion of project.

See More

Deciding