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

[Chainstate] SmartContract tx wire format to indicate which Clarity version to use #2719

Closed
kantai opened this issue Jun 17, 2021 · 1 comment
Assignees

Comments

@kantai
Copy link
Member

kantai commented Jun 17, 2021

The #2659 PR introduced Clarity versioning after the 2.1 epoch-switch, but it just applies the "default" version to all new contracts. Instead, we should support some new special top-level-only function that allows selecting the Clarity version.

jcnelson added a commit that referenced this issue Jun 28, 2021
…dicates that a network error can be resolved by simply re-trying the poll loop.
gregorycoppola added a commit that referenced this issue Aug 2, 2021
* feat: add lcov compatible coverage reporting to clarity-cli

* make lcov output configurable

* chore: cleanup/refactor miner tenure information gathering

* chore: updates for latest bitcoind

* typo

* fix: ensure microblocks mined by the node itself are emitted to the event observer

* feat: emit microblock header hash to event observer, required for micro-fork detection

* feat: include microblock parent hash in /new_microblocks event paylaod

* test: added test to ensure microblock hashes were properly added to the mb event

* fix: #2668 microblock data missing from event emitter while syncing

* Added prev burn block stats to the new_block event

* Added burn block stats for new_microblock event; refactored variable names for burn block stats for the new_block event

* Switched using  to using  for all the burn block stats, handled getting burn block stats in the case that the parent_consensus_hash was the

* Add some string-ascii and string-utf8 types to the docs

* ran format

* Changed panic! to warn! statement

* feat: add output_serialized to clarity-cli

* added some additional examples

* added all the different examples

* added concat example

* feat: make eval_all function public (#2689)

* running format

* Addressed comments.

* Addressed failing tests

* Use a virtual type 'sequence' to condense complicated disjoined types

Instead of having long lists of disjoined types, e.g.,
buff|(list A)|string-ascii|string-utf8

We now condense these to being a 'virtual' type called 'sequence',
which doesn't actually exist in the Clarity type hierarchy,
but is used in the docs, and which is explained in each description
in which it is used.

* Ran 'cargo fmt'

* Fixed some signatures

Some signatures were inconsistent with the input/output types.

* Fixed one more signature

This changes a signature that antedates this PR to be
more consistent.

* Re-worked the types and signatures

Various changes to the focus functions were made for clarity and consistency.

* fix: #2644 reorder UTXO staleness and RBF-limit check

* Addressing comments by @pavitthrap

* Fixes build warnings for 'cargo build' in 'develop' branch

* Added new-microblocks event to event dispatcher docs

* chore: remove tini dependency

* Fixed a vm:docs test case

* Fixed some typos

* removed some files that aren't in 'develop'

* Trying to rever CHANGELOG.md

* Reverting files to the 'develop' branch versions

* fix: logic bug in mocknet/helium miner #2710

* Removed a TODO, the question it relates to is now in issue #2712

* Removed a trailing space character.

* chore: try to speed up some integration tests

* chore: remove infinite loop in microblock_integration test

* test: use wait_for_microblocks rather than a wait_ms

* dont assert microblocks bumped -- it could have been bumped before the call to wait_for_microblocks

* test: wait for microblock to be processed before fetching /v2/info, use loop on wait_for_microblocks

* test: oops, flip equality in /v2/info loop

* docs: adding release process to README.md

* docs: add info on creating release candidate, and Hiro testing envs

* chore: genesis accounts key rotation

* chore: update magic bytes (X6 to T2)

* chore: update POX constants

* chore: update genesis anchoring (block #2000000)

* chore: update testnet command

* fix: address regressions

* chore: cargo fmt

* chore: update readme

* fix: addressing regression in integration test

* fix: silence non-fmt panic warnings

* fix: remove potentiall runtime panic that can arise when a sortition is queried while it is in the process of being invalidated

* fix: disable non-fmt panic warnings

* fix: disable non-fmt panic warnings

* refactor: use PeerNetwork::with_http() to expose the underlying HttpPeer

* fix: when loading block headers, if we encounter an InvalidPoxSortition error from the GetBlocksInv handler, reply a NACK instead of erroring out

* feat: query the list of bootstrap nodes distinct from always-allowed nodes

* fix: address #2730 by considering whether or not we are in the IBD phase when choosing where to start scanning for new block downloads. Also, use the PeerNetwork::with_http() interface to access the inner HTTP peer when downloading blocks and microblocks.

* fix: address #2728 by only rescanning a neighbor's inventory from just before the reward cycle it reported that the local peer diverged. Also, record this sortition height for the block downloader's consumption.

* fix: address #2719 by introducing a Transient(..) error type which indicates that a network error can be resolved by simply re-trying the poll loop.

* refactor: make the HTTP peer an Optional<..> so the PeerNetwork instance can be passed to the HTTP handler code. Also, do a better job at propagating hints from the inventory state-machine to the downloader as part of #2730.

* refactor: use new test API for adding peers

* fix: take a PeerNetwork as an argument for handling requests, and address #2738 by way of using cached data in the PeerNetwork to construct a /v2/info response without doing any I/O

* refactor: take a PeerNetwork instance as an argument instead of a hodge-podge of fields from it, so it can be passed into the HTTP request handler

* fix: address #2701 by catching Transient(..) errors and simply logging them

* fix: address #2713 by starting processing from the first burnchain block of the reward cycle in which the canonical Stacks chain state starts

* refactor: use latest rust-ism for spin loops

* fix: fix compiler errors in unit tests

* fix: more compile-time errors

* docs: address PR feedback

* fix: update the cached burnchain view *before* servicing HTTP requests, so /v2/info acts on the *current* chain view

* Update README.md

Co-authored-by: Ludo Galabru <[email protected]>

* Update README.md

Co-authored-by: Ludo Galabru <[email protected]>

* Update README.md

Co-authored-by: Ludo Galabru <[email protected]>

* docs: add optionality on when to open develop->master PR

* fix: sync one more blocks inventory on PoX disagreement so we don't stall, and use the cached burnchain_tip in PeerNetwork to determine whether or not the PoX bitvector needs to be reloaded. In addition, use the _new_ PoX bitvector length to carry out an inv trucation if it's shorter

* fix: refresh cached sortition state before doing anything else in the peer network run loop

* fix: mask net_error::Transient in the p2p state machine so we don't accidentally drop receipts

* fix: always panic on network error, now that the network masks transient errors

* fix: re-enable non_fmt_panic lint

* style: make bufflength instance variable private

* fix: only set the block/microblock start sortition if the downloader isn't in the middle of processing blocks

* fix: when starting a block inventory scan from a remote bootstrap peer that's diverged from us, start at either the reward cycle that contains the highest processed Stacks block, or INV_REWARD_CYCLES fewer reward cycles than the diverged reward cycle -- whichever is lower

* fix: when starting a downloader pass, start from the sortition height of either the highest processed Stacks block, or the inventory sortition height hint from the inv state machine -- whichever is lower

* chore: address feedbacks

* fix: use constant

* chore: fix all warns in `cargo check --tests --workspace`

* chore: simplify fmt/asserts

* Add Changelog for 2.0.11.2.0 (#2760)

* changelog for 2.0.11.2.0

* fixed spelling error

* fixed grammar error in changelog

* fix: issue 2771

* fix: tests::neon_integrations::bitcoind_forking_test

* fix: move log

* fix: move comment

* feat(docs): Add to "Non-Consensus Breaking Release Process" (#2766)

* changelog for 2.0.11.2.0

* start to discuss the version number

* changelog section

* fixed the wording around conensus breaking change

* updates to the changelog section

* added to release timing.

* added to timing section

* fix: test + patch

* chore: cargo fmt

* fix: edge case

* fix: restore timeout

* chore: add comments

* fix: revert patch

* chore: cargo fmt

* Update testnet/stacks-node/src/tests/neon_integrations.rs

* Update testnet/stacks-node/src/tests/neon_integrations.rs

* Update testnet/stacks-node/src/tests/neon_integrations.rs

* fix: bitcoind_forking_test assertions added

* fix: bitcoind_forking_test assertions added

* Update src/burnchains/burnchain.rs

* fix: only consider target block if relevant

* chore: cargo fmt

* chore: add log when ignoring target

* Update src/burnchains/burnchain.rs

* Update src/burnchains/burnchain.rs

* fix: log

* fix: switched all occurrences of max_value/min_value to MAX/MIN because it will deprecated in a future version of Rust

* feat(Changelog) Add some PR's that got missed for 2.0.11.2.0 (#2789)

* added micro-blocks PR to the changelog

* add PR 2647

* removed a space

* added some notes about the reset of the testnet

* "master -> develop" ahead of Release 2.0.11.2.0 (#2796)

* fix: typos in Clarity docs

* docs: rupdate testnet information and run lint

* docs: add regtest name and address reviewer comments

Co-authored-by: Patrick Gray <[email protected]>
Co-authored-by: pavitthrap <[email protected]>

* feat(Changelog): Adds in two patches to the Changelog (#2795)

* Add Ludo's bug fixes to the change log.

* removed extra space

Co-authored-by: Aaron Blankstein <[email protected]>
Co-authored-by: Matthew Little <[email protected]>
Co-authored-by: Pavitthra Pandurangan <[email protected]>
Co-authored-by: Greg Coppola <[email protected]>
Co-authored-by: Hank Stoever <[email protected]>
Co-authored-by: Reed Rosenbluth <[email protected]>
Co-authored-by: Jude Nelson <[email protected]>
Co-authored-by: CharlieC3 <[email protected]>
Co-authored-by: Ludo Galabru <[email protected]>
Co-authored-by: Patrick Gray <[email protected]>
@jcnelson
Copy link
Member

jcnelson commented May 9, 2022

Per the call today, it would be easier to add the pragma data to the TransactionPayload::SmartContract(..) variant than to add a new Clarity keyword to indicate the pragma.

@jcnelson jcnelson reopened this May 23, 2022
@jcnelson jcnelson changed the title Add pragma versioning keyword for non-default-Clarity-versioning [Chainstate] SmartContract tx wire format to indicate which Clarity version to use May 23, 2022
@jcnelson jcnelson self-assigned this May 23, 2022
@jcnelson jcnelson closed this as completed Aug 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants