Replies: 5 comments 7 replies
-
We should 4x these estimates if we want to consider the end-to-end time between writing the code and getting the requite reviewers' sign-offs. |
Beta Was this translation helpful? Give feedback.
-
@jcnelson I recall you mentioned in this Monday's public blockchain call that Stacks 2.1 work items were on track. I might have missed some details though, so I was wondering if you could provide an update here on 1) what's remaining and 2) rough timeline? Is this board up-to-date? If so, happy to use that as the reference, though it's hard to get a sense of time estimates from the board. I think a periodic update on this discussion would also benefit those following this issue but not attending the meetings, and also help inform other stakeholders / community members in case there are places where folks can help chip in to move things along. Thanks! |
Beta Was this translation helpful? Give feedback.
-
Looking at the current 2.1 Items, the following tasks seem to have the highest impact with the help from team at Hiro. I also, added a note on these issues individually. |
Beta Was this translation helpful? Give feedback.
-
Based on the estimates here and current WIP, here's the code complete and post code complete timeline. Projected Code Complete: Se 09 2022 |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
How to Read this Document
All items marked with
Pain level: very high
orPain level: high
are required for 2.1. Everything else is informational.The time estimations here are in person-hours spent working on the task, where 1 day is 8 person-hours. These person-hours may be spread across many wall-clock days, depending on whether or not there are other non-2.1 tasks that take precedence. These estimates do not include time taken to review the code.
The associated Github issues' progress can be tracked on the Stacks 2.1 project board.
1-2 days
Consensus bug: wrong microblock fee calculation [[chainstate] parent block miner does not receive 40% of the microblock tx fees #3140]
Fix UTXO chaining [Reliability improvements: UTXO chaining breaks after miner commitments miss intended burnchain block #2358]: This seems to be a 10-line change -- we just need to fix and gate the block height offset calculation. Most of the work is going to be in testing it.
Expose chain ID [Expose chain ID in Clarity #2982]. This is the act of adding a new global variable, and gating its usage (including whether or not it's mainnet or testnet)
Expose burnchain tokens spent for a Stacks block via
get-block-info?
or similar, as well as exposing the STX accumulated [[stacks 2.1] expose BTC/STX exchange rate in Clarity #3043]No sortition is possible in the last reward cycle block if the number of reward slots is odd [[burnchain] the block-commit at the end of the reward cycle's pay-out period will never be valid if the size of the reward set is odd #2507]: This is a 10-line change -- we just need to use the correct burn address for mainnet. Most of the work is going to be in testing it.
Tolerate flash blocks in PoX prepare phase [Stacks 2.1: Flash-block resistant PoX anchor selection calculation #2535]: This is a matter of changing the burn window size from w to w - min(M, m), where w = 100 per SIP 007, M is the maximum number of missed sortitions we tolerate (e.g. 10), and m is the actual number of missed sortitions. Most of the work is going to be in testing it.
Check a contract-call's argument count on analysis [VM: analysis pass should consider argument count when deploying a contract #2683]. This is a 10-line bugfix that must be gated. It will take more work to test than to implement.
Enforce the right number of arguments for all native types [[Clarity] use stricter argument count checks #3117]
2-3 days
Codec for Clarity values to/from buffers [Feature request: allow hashing functions to hash other Clarity types #2693]. This is part of SIP-018, which will likely be folded into the Stacks 2.1 SIP. This is a new set of Clarity functions, and would require coordinating with the SIP-018 authors on the semantics.
Bitcoin wire format rigidity [Bitcoin wire format rigidity #2094], if we take the simple approach of just widening the window for which an on-BTC operation will be treated as valid
Extend PoX sunset [[Stacks-2.1] remove PoX sunset and cap unburnt PoX output to be a function of the last prepare phase #2613]. Just remove the sunset; don't touch
(reject-pox)
; just implement the capped upside for discount-miningRequire PoX anchor block to correspond to the block commit with the most BTC and confirmations [Reliability improvements: require anchor block to have maximum BTC weight #2625]. Blocked on merging Fix/1805 #2707.
Finalize
(at-block)
andcontract-call?
semantics across Clarity versions and epoch boundaries, and add adequate test coverage [[Clarity] rules for determining which Clarity version to run #3131]Implement getters for all state in
.pox-2
and test them [PoX Updates:.pox-info
contract for native information getters #2538]Treat analysis errors found at runtime as runtime errors [[clarity] All check errors must be handled as runtime errors #3107]
Always bill the transaction fee when running a transaction [[chainstate] deduct fee before running the transaction #3213]
Implement getters for the reward set [[clarity] expose PoX reward recipient addresses via
get-burn-block-info?
#3155]Implement
.costs-3
costs contract [[Clarity] need a.costs-3
contract for Stacks 2.1 and associated benchmarking #3115]Get burn header hash by block height
Parse and assemble principals from primitive types
Order-independent transaction signing [Reliability Improvements: order-independent tx signing and verifying #2622]: This requires introducing an additional transaction authentication mode for permitting any order of key signatures, and requires gating its usage until after 2.1 in the block-validation logic and miner. We'd want to rigorously test this, and we'd probably want to introduce a new transaction version value for this. AFAIK no hardware wallets even support multisig yet, so we have a somewhat green field to work with here.
3-7 days
Implement
stacks-unlock
[PoX Updates:stack-unlock
#2534]Implement
stacks-increase
[PoX Updates:stack-increase
#2533]stack-increase
for PoX-2 #3282Native segwit support for PoX outputs [PoX: native segwit support #2586]. We'll need to change the type signatures for all
.pox-2
methods that take a PoX address, add support for new PoX address versions in.pox-2
, and add a variant toStacksAddress
(i.e. make it anenum
, not astruct
) to represent segwit addresses (i.e. witness program version, 32 byte hash). We'll also need to test this rigorously.Update coinbase transaction to pay to contract address [[chainstate] Add support for pay-to-contract in coinbase transaction variant #3101].
Cap upside of discount mining [[burnchain] cap the upside of discount-mining #3095]. This is the act of (a) forcing miners to burn BTC if they spend beyond a given threshold on a block-commit, and (b) figuring out the right way to find the threshold -- i.e. from one or more prepare phases. This will require some exploration of historic chainstate, and will need some rounds of review.
Handle the arrival of a hidden anchor block without reorging the whole chain [Absent PoX anchors should be "forkable" #1805]
Compress Clarity contracts and only bill for loading/storing their compressed representation [[VM] Compress contracts before storing them and decompress on load, and bill the user only for the number of bytes in the compressed representation #2926]. This will require choosing and evaluating a consensus-critical compression algorithm, will require gating the feature, and will require re-assessing the runtime costs in Stacks 2.1 for loading/storing compressed contract data. We'll need to benchmark the new load/store routines end-to-end.
Beta Was this translation helpful? Give feedback.
All reactions