Skip to content

Commit 10f1e1a

Browse files
committed
fix: adapt code to refactor on StacksAddress and PrincipalData
1 parent a65224b commit 10f1e1a

File tree

4 files changed

+27
-34
lines changed

4 files changed

+27
-34
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

clarity/src/vm/clarity_wasm.rs

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,28 @@
1-
use std::borrow::BorrowMut;
2-
use std::collections::{BTreeMap, HashMap};
3-
use std::f32::EPSILON;
4-
use std::fs::File;
5-
use std::io::Write;
6-
71
use stacks_common::types::chainstate::StacksBlockId;
82
use stacks_common::types::StacksEpochId;
93
use stacks_common::util::hash::{Keccak256Hash, Sha512Sum, Sha512Trunc256Sum};
104
use stacks_common::util::secp256k1::{secp256k1_recover, secp256k1_verify, Secp256k1PublicKey};
11-
use wasmtime::{AsContextMut, Caller, Engine, Linker, Memory, Module, Store, Trap, Val, ValType};
5+
use wasmtime::{AsContextMut, Caller, Linker, Memory, Module, Store, Val, ValType};
126

13-
use super::analysis::{CheckError, CheckErrors};
7+
use super::analysis::CheckErrors;
148
use super::ast::{build_ast_with_rules, ASTRules};
159
use super::callables::{DefineType, DefinedFunction};
16-
use super::contracts::Contract;
17-
use super::costs::{constants as cost_constants, CostTracker, LimitedCostTracker};
18-
use super::database::clarity_db::ValueResult;
19-
use super::database::{ClarityDatabase, DataVariableMetadata, STXBalance};
10+
use super::costs::{constants as cost_constants, CostTracker};
11+
use super::database::STXBalance;
2012
use super::errors::RuntimeErrorType;
2113
use super::events::*;
2214
use super::functions::crypto::{pubkey_to_address_v1, pubkey_to_address_v2};
2315
use super::types::signatures::CallableSubtype;
2416
use super::types::{
25-
ASCIIData, AssetIdentifier, BlockInfoProperty, BuffData, BurnBlockInfoProperty, CallableData,
26-
CharType, FixedFunction, FunctionType, ListData, ListTypeData, OptionalData, PrincipalData,
27-
QualifiedContractIdentifier, ResponseData, SequenceData, StacksAddressExtensions,
28-
StandardPrincipalData, TraitIdentifier, TupleData, TupleTypeSignature, UTF8Data, BUFF_1,
29-
BUFF_32, BUFF_33,
17+
ASCIIData, AssetIdentifier, BuffData, CallableData, CharType, FunctionType, ListData,
18+
ListTypeData, OptionalData, PrincipalData, QualifiedContractIdentifier, ResponseData,
19+
SequenceData, StacksAddressExtensions, StandardPrincipalData, TraitIdentifier, TupleData,
20+
TupleTypeSignature, BUFF_1, BUFF_32, BUFF_33,
3021
};
3122
use super::{CallStack, ClarityVersion, ContractName, Environment, SymbolicExpression};
3223
use crate::vm::analysis::ContractAnalysis;
33-
use crate::vm::ast::ContractAST;
3424
use crate::vm::contexts::GlobalContext;
3525
use crate::vm::errors::{Error, WasmError};
36-
use crate::vm::functions::principals;
3726
use crate::vm::types::{
3827
BufferLength, SequenceSubtype, SequencedValue, StringSubtype, TypeSignature,
3928
};
@@ -890,7 +879,7 @@ fn read_from_wasm(
890879
.read(store.as_context_mut(), current_offset, &mut hash)
891880
.map_err(|e| Error::Wasm(WasmError::Runtime(e.into())))?;
892881
current_offset += PRINCIPAL_HASH_BYTES;
893-
let principal = StandardPrincipalData(version[0], hash);
882+
let principal = StandardPrincipalData::new(version[0], hash)?;
894883
let mut contract_length_buf: [u8; CONTRACT_NAME_LENGTH_BYTES] =
895884
[0; CONTRACT_NAME_LENGTH_BYTES];
896885
memory
@@ -1393,7 +1382,7 @@ fn write_to_wasm(
13931382
.write(
13941383
&mut store,
13951384
(in_mem_offset + in_mem_written) as usize,
1396-
&[standard.0],
1385+
&[standard.version()],
13971386
)
13981387
.map_err(|e| Error::Wasm(WasmError::UnableToWriteMemory(e.into())))?;
13991388
in_mem_written += 1;
@@ -1645,9 +1634,11 @@ fn pass_argument_to_wasm(
16451634
buffer.push(Val::I32(written));
16461635
Ok((buffer, offset + written, in_mem_offset + in_mem_written))
16471636
}
1648-
Value::Principal(PrincipalData::Standard(StandardPrincipalData(v, h))) => {
1637+
Value::Principal(PrincipalData::Standard(data)) => {
16491638
let mut bytes: Vec<u8> = Vec::with_capacity(22);
1650-
bytes.push(*v);
1639+
let v = data.version();
1640+
let h = &data.1;
1641+
bytes.push(v);
16511642
bytes.extend(h);
16521643
bytes.push(0);
16531644
let buffer = vec![Val::I32(in_mem_offset), Val::I32(bytes.len() as i32)];
@@ -1665,15 +1656,17 @@ fn pass_argument_to_wasm(
16651656
// Callable types can just ignore the optional trait identifier, and
16661657
// is handled like a qualified contract
16671658
let QualifiedContractIdentifier {
1668-
issuer: StandardPrincipalData(v, h),
1659+
issuer,
16691660
name,
16701661
} = p;
1662+
let v = issuer.version();
1663+
let h = &issuer.1;
16711664
let bytes: Vec<u8> = std::iter::once(v)
1672-
.chain(h.iter())
1673-
.chain(std::iter::once(&name.len()))
1674-
.chain(name.as_bytes())
1675-
.copied()
1665+
.chain(h.iter().copied())
1666+
.chain(std::iter::once(name.len() as u8))
1667+
.chain(name.as_bytes().iter().copied())
16761668
.collect();
1669+
16771670
let buffer = vec![Val::I32(in_mem_offset), Val::I32(bytes.len() as i32)];
16781671
memory
16791672
.write(&mut store, in_mem_offset as usize, &bytes)
@@ -1970,14 +1963,14 @@ fn wasm_to_clarity_value(
19701963
memory
19711964
.read(store.as_context_mut(), offset as usize + 21, &mut buffer)
19721965
.map_err(|e| Error::Wasm(WasmError::UnableToReadMemory(e.into())))?;
1973-
let standard = StandardPrincipalData(
1966+
let standard = StandardPrincipalData::new(
19741967
principal_bytes[0],
19751968
principal_bytes[1..].try_into().map_err(|_| {
19761969
Error::Wasm(WasmError::WasmGeneratorError(
19771970
"Could not decode principal".into(),
19781971
))
19791972
})?,
1980-
);
1973+
)?;
19811974
let contract_name_length = buffer[0] as usize;
19821975
if contract_name_length == 0 {
19831976
Ok((Some(Value::Principal(PrincipalData::Standard(standard))), 2))

clarity/src/vm/contexts.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use wasmtime::Engine;
2828

2929
use super::analysis::{self, ContractAnalysis};
3030
#[cfg(feature = "clarity-wasm")]
31-
use super::clarity_wasm::{call_function, ClarityWasmContext};
31+
use super::clarity_wasm::call_function;
3232
use super::EvalHook;
3333
use crate::vm::ast::{ASTRules, ContractAST};
3434
use crate::vm::callables::{DefinedFunction, FunctionIdentifier};
@@ -588,7 +588,7 @@ impl<'a> OwnedEnvironment<'a> {
588588
&'b mut self,
589589
sender: Option<PrincipalData>,
590590
sponsor: Option<PrincipalData>,
591-
context: &'b mut ContractContext,
591+
context: &'b ContractContext,
592592
) -> Environment<'b, 'a> {
593593
Environment::new(
594594
&mut self.context,

stackslib/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ libstackerdb = { path = "../libstackerdb" }
5757
siphasher = "0.3.7"
5858
hashbrown = { workspace = true }
5959
toml = { workspace = true }
60-
clar2wasm = { git = "https://github.com/stacks-network/clarity-wasm.git", branch = "main"}
60+
clar2wasm = { git = "https://github.com/stacks-network/clarity-wasm.git", branch = "fix/adapt-wasm-to-stacks-core-refactor"}
6161

6262
[target.'cfg(not(any(target_os = "macos",target_os="windows", target_arch = "arm" )))'.dependencies]
6363
tikv-jemallocator = {workspace = true}

0 commit comments

Comments
 (0)