feat: initial changes to support Clarity 3

This commit is contained in:
Brice Dobry
2024-02-02 10:37:34 -05:00
parent 9d3722a0df
commit 619d26e1dd
2 changed files with 10 additions and 3 deletions

View File

@@ -35,6 +35,8 @@ define_versioned_named_enum!(NativeVariables(ClarityVersion) {
TxSponsor("tx-sponsor?", ClarityVersion::Clarity2),
Mainnet("is-in-mainnet", ClarityVersion::Clarity2),
ChainId("chain-id", ClarityVersion::Clarity2),
StacksBlockHeight("stacks-block-height", ClarityVersion::Clarity3),
TenureHeight("tenure-height", ClarityVersion::Clarity3),
});
impl NativeVariables {

View File

@@ -9,6 +9,7 @@ use crate::vm::errors::{Error, RuntimeErrorType};
pub enum ClarityVersion {
Clarity1,
Clarity2,
Clarity3,
}
impl fmt::Display for ClarityVersion {
@@ -16,13 +17,14 @@ impl fmt::Display for ClarityVersion {
match self {
ClarityVersion::Clarity1 => write!(f, "Clarity 1"),
ClarityVersion::Clarity2 => write!(f, "Clarity 2"),
ClarityVersion::Clarity3 => write!(f, "Clarity 3"),
}
}
}
impl ClarityVersion {
pub fn latest() -> ClarityVersion {
ClarityVersion::Clarity2
ClarityVersion::Clarity3
}
pub fn default_for_epoch(epoch_id: StacksEpochId) -> ClarityVersion {
match epoch_id {
@@ -37,7 +39,7 @@ impl ClarityVersion {
StacksEpochId::Epoch23 => ClarityVersion::Clarity2,
StacksEpochId::Epoch24 => ClarityVersion::Clarity2,
StacksEpochId::Epoch25 => ClarityVersion::Clarity2,
StacksEpochId::Epoch30 => ClarityVersion::Clarity2,
StacksEpochId::Epoch30 => ClarityVersion::Clarity3,
}
}
}
@@ -51,9 +53,12 @@ impl FromStr for ClarityVersion {
Ok(ClarityVersion::Clarity1)
} else if s == "clarity2" {
Ok(ClarityVersion::Clarity2)
} else if s == "clarity3" {
Ok(ClarityVersion::Clarity3)
} else {
Err(RuntimeErrorType::ParseError(
"Invalid clarity version. Valid versions are: Clarity1, Clarity2.".to_string(),
"Invalid clarity version. Valid versions are: Clarity1, Clarity2, Clarity3."
.to_string(),
)
.into())
}