-
Notifications
You must be signed in to change notification settings - Fork 768
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
Crowdloan not participating in Auction #479
Comments
For reference; the manual ED transfers were in block 16,308,353 (inv arch) and 16,308,374 (Peaq). PS: Looking at the events, the ED transfers are in the block range where it started working again. |
@ggwpez I think this makes a lot of sense. After you put the ED on place, then the contribution nudged the crowdloan pallet to check if it was the highest bid and the crowdloan effectively bid on the auction. If this is the case, then we need to look into it relatively fast. Otherwise, other crowdloans that can arise for the next batch of auction (starting in ~25 days) will face the same issue. |
placing the bid will eventually lead to a problematic line of code that will attempt to reserve all of the free balance in the crowdloan account. This was acceptable prior to paritytech/substrate#12951 and no longer is. The fix, as the PR says, should be to increment the providers of any crowdloan account (assuming some sort of deposit is taken). For example, this is the account of CL66 before and after their first successful bid. If this is the correct patch, more important than the patch itself is to see why no unit tests in this pallet caught the issue, and make sure one is added. As a bonus, you can then look at the other pallets using |
I was able to setup a UT that reproduces this issue and it only happened if we were not incrementing the providers while creating the crowdloan. In the crowdloans that caused the issue, we could see only 1 provider before the bid which would make it fail when the entire amount is tried to be reserved. However, the new ones already had 2 providers. So, it seems that the previous crowdloans were created before the change went live (and hence did not have the increment of the providers at creation). More info around the dates confirming that erroneous crowdloan was indeed created before the release:
|
* parse substrate message proof * unfinalized_header
Context
Auction paritytech/polkadot#45 started on Polkadot at block 16_291_326. At that moment in time, two crowdloans were running: paraID 3338 and paraID3340. Both crowloands had an
ending_block
that was smaller than the Last Block of Auction 45, however greater than the start of theending_period
for Auction 45.The moment that
start_period
of Auction 45 started, paraID's 3338 Crowdloan managed to place a bid. Noteworthy, all the blocks instart_period
of any auction do not count to the actual candle stick auction mechanism.The Issue
At block 16_2913_26 the
ending_period
of Auction 45 started, however none of the active crowdloans could place a bid. The action of placing a bid for both crowdloans would error out withConsumerRemaining
, as can be seen here for paraID 3340 and here for paraID 3338.It is my understanding (but this could be wrong), that this Event is being triggered from the
on_initialize
function from the Crowdloan Pallet.After this, several attempts were made by contributors to contribute to the crowdloan to see if that could potentially nudge something and make the crowdloan bid. None of them were successful until:
Expected Behavior
The expected behavior was for the crowdloans to participate on the auction the moment the
ending_period
of the auction started.After the nudge stated before, both crowdloans managed to place a bid and are competing in the auction.
Related links
The following are some functions identified while trying to understand the issue.
The text was updated successfully, but these errors were encountered: