Skip to content

Commit ae4f41b

Browse files
committed
wip: Change ScriptContext to Context
1 parent 87debbe commit ae4f41b

File tree

27 files changed

+260
-260
lines changed

27 files changed

+260
-260
lines changed

bitcoind-tests/bin/bitcoind

-18 Bytes
Binary file not shown.

bitcoind-tests/tests/setup/test_util.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use bitcoin::secp256k1;
2525
use internals::hex::exts::DisplayHex;
2626
use miniscript::descriptor::{SinglePub, SinglePubKey};
2727
use miniscript::{
28-
bitcoin, hash256, Descriptor, DescriptorPublicKey, Error, Miniscript, ScriptContext,
28+
bitcoin, hash256, Descriptor, DescriptorPublicKey, Error, Miniscript, Context,
2929
TranslatePk, Translator,
3030
};
3131
use rand::RngCore;
@@ -150,7 +150,7 @@ pub fn random_pk(mut seed: u8) -> bitcoin::PublicKey {
150150
#[allow(dead_code)]
151151
// https://github.com/rust-lang/rust/issues/46379. The code is pub fn and integration test, but still shows warnings
152152
/// Parse an insane miniscript into a miniscript with the format described above at file header
153-
pub fn parse_insane_ms<Ctx: ScriptContext>(
153+
pub fn parse_insane_ms<Ctx: Context>(
154154
ms: &str,
155155
pubdata: &PubData,
156156
) -> Miniscript<DescriptorPublicKey, Ctx> {

bitcoind-tests/tests/test_desc.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use bitcoin::{
1919
use bitcoind::bitcoincore_rpc::{json, Client, RpcApi};
2020
use miniscript::bitcoin::{self, ecdsa, taproot, ScriptBuf};
2121
use miniscript::psbt::{PsbtExt, PsbtInputExt};
22-
use miniscript::{Descriptor, Miniscript, ScriptContext, ToPublicKey};
22+
use miniscript::{Descriptor, Miniscript, Context, ToPublicKey};
2323
mod setup;
2424

2525
use rand::RngCore;
@@ -318,7 +318,7 @@ pub fn test_desc_satisfy(
318318
}
319319

320320
// Find all secret corresponding to the known public keys in ms
321-
fn find_sks_ms<Ctx: ScriptContext>(
321+
fn find_sks_ms<Ctx: Context>(
322322
ms: &Miniscript<bitcoin::PublicKey, Ctx>,
323323
testdata: &TestData,
324324
) -> Vec<secp256k1::SecretKey> {

src/descriptor/bare.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use bitcoin::{Address, Network, ScriptBuf};
1515

1616
use super::checksum::{self, verify_checksum};
1717
use crate::expression::{self, FromTree};
18-
use crate::miniscript::context::{ScriptContext, ScriptContextError};
18+
use crate::miniscript::context::{Context, ContextError};
1919
use crate::policy::{semantic, Liftable};
2020
use crate::prelude::*;
2121
use crate::util::{varint_len, witness_to_scriptsig};
@@ -205,7 +205,7 @@ pub struct Pkh<Pk: Key> {
205205

206206
impl<Pk: Key> Pkh<Pk> {
207207
/// Create a new Pkh descriptor
208-
pub fn new(pk: Pk) -> Result<Self, ScriptContextError> {
208+
pub fn new(pk: Pk) -> Result<Self, ContextError> {
209209
// do the top-level checks
210210
match BareCtx::check_pk(&pk) {
211211
Ok(()) => Ok(Pkh { pk }),

src/descriptor/segwitv0.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use bitcoin::{Address, Network, ScriptBuf};
1313
use super::checksum::{self, verify_checksum};
1414
use super::SortedMultiVec;
1515
use crate::expression::{self, FromTree};
16-
use crate::miniscript::context::{ScriptContext, ScriptContextError};
16+
use crate::miniscript::context::{Context, ContextError};
1717
use crate::policy::{semantic, Liftable};
1818
use crate::prelude::*;
1919
use crate::util::varint_len;
@@ -303,7 +303,7 @@ pub struct Wpkh<Pk: Key> {
303303

304304
impl<Pk: Key> Wpkh<Pk> {
305305
/// Create a new Wpkh descriptor
306-
pub fn new(pk: Pk) -> Result<Self, ScriptContextError> {
306+
pub fn new(pk: Pk) -> Result<Self, ContextError> {
307307
// do the top-level checks
308308
match Segwitv0::check_pk(&pk) {
309309
Ok(_) => Ok(Wpkh { pk }),
@@ -330,7 +330,7 @@ impl<Pk: Key> Wpkh<Pk> {
330330
/// Checks whether the descriptor is safe.
331331
pub fn sanity_check(&self) -> Result<(), Error> {
332332
if self.pk.is_uncompressed() {
333-
Err(Error::ContextError(ScriptContextError::CompressedOnly(
333+
Err(Error::ContextError(ContextError::CompressedOnly(
334334
self.pk.to_string(),
335335
)))
336336
} else {

src/descriptor/sh.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use bitcoin::{script, Address, Network, ScriptBuf};
1717
use super::checksum::{self, verify_checksum};
1818
use super::{SortedMultiVec, Wpkh, Wsh};
1919
use crate::expression::{self, FromTree};
20-
use crate::miniscript::context::ScriptContext;
20+
use crate::miniscript::context::Context;
2121
use crate::policy::{semantic, Liftable};
2222
use crate::prelude::*;
2323
use crate::util::{varint_len, witness_to_scriptsig};

src/descriptor/sortedmulti.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use core::str::FromStr;
1212

1313
use bitcoin::script;
1414

15-
use crate::miniscript::context::ScriptContext;
15+
use crate::miniscript::context::Context;
1616
use crate::miniscript::decode::Terminal;
1717
use crate::miniscript::limits::MAX_PUBKEYS_PER_MULTISIG;
1818
use crate::prelude::*;
@@ -23,16 +23,16 @@ use crate::{
2323

2424
/// Contents of a "sortedmulti" descriptor
2525
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
26-
pub struct SortedMultiVec<Pk: Key, Ctx: ScriptContext> {
26+
pub struct SortedMultiVec<Pk: Key, Ctx: Context> {
2727
/// signatures required
2828
pub k: usize,
2929
/// public keys inside sorted Multi
3030
pub pks: Vec<Pk>,
31-
/// The current ScriptContext for sortedmulti
31+
/// The current Context for sortedmulti
3232
pub(crate) phantom: PhantomData<Ctx>,
3333
}
3434

35-
impl<Pk: Key, Ctx: ScriptContext> SortedMultiVec<Pk, Ctx> {
35+
impl<Pk: Key, Ctx: Context> SortedMultiVec<Pk, Ctx> {
3636
/// Create a new instance of `SortedMultiVec` given a list of keys and the threshold
3737
///
3838
/// Internally checks all the applicable size limits and pubkey types limitations according to the current `Ctx`.
@@ -98,13 +98,13 @@ impl<Pk: Key, Ctx: ScriptContext> SortedMultiVec<Pk, Ctx> {
9898
}
9999
}
100100

101-
impl<Pk: Key, Ctx: ScriptContext> ForEachKey<Pk> for SortedMultiVec<Pk, Ctx> {
101+
impl<Pk: Key, Ctx: Context> ForEachKey<Pk> for SortedMultiVec<Pk, Ctx> {
102102
fn for_each_key<'a, F: FnMut(&'a Pk) -> bool>(&'a self, pred: F) -> bool {
103103
self.pks.iter().all(pred)
104104
}
105105
}
106106

107-
impl<Pk: Key, Ctx: ScriptContext> SortedMultiVec<Pk, Ctx> {
107+
impl<Pk: Key, Ctx: Context> SortedMultiVec<Pk, Ctx> {
108108
/// utility function to sanity a sorted multi vec
109109
pub fn sanity_check(&self) -> Result<(), Error> {
110110
let ms: Miniscript<Pk, Ctx> =
@@ -116,7 +116,7 @@ impl<Pk: Key, Ctx: ScriptContext> SortedMultiVec<Pk, Ctx> {
116116
}
117117
}
118118

119-
impl<Pk: Key, Ctx: ScriptContext> SortedMultiVec<Pk, Ctx> {
119+
impl<Pk: Key, Ctx: Context> SortedMultiVec<Pk, Ctx> {
120120
/// Create Terminal::Multi containing sorted pubkeys
121121
pub fn sorted_node(&self) -> Terminal<Pk, Ctx>
122122
where
@@ -194,7 +194,7 @@ impl<Pk: Key, Ctx: ScriptContext> SortedMultiVec<Pk, Ctx> {
194194
}
195195
}
196196

197-
impl<Pk: Key, Ctx: ScriptContext> policy::Liftable<Pk> for SortedMultiVec<Pk, Ctx> {
197+
impl<Pk: Key, Ctx: Context> policy::Liftable<Pk> for SortedMultiVec<Pk, Ctx> {
198198
fn lift(&self) -> Result<policy::semantic::Policy<Pk>, Error> {
199199
let ret = policy::semantic::Policy::Threshold(
200200
self.k,
@@ -207,13 +207,13 @@ impl<Pk: Key, Ctx: ScriptContext> policy::Liftable<Pk> for SortedMultiVec<Pk, Ct
207207
}
208208
}
209209

210-
impl<Pk: Key, Ctx: ScriptContext> fmt::Debug for SortedMultiVec<Pk, Ctx> {
210+
impl<Pk: Key, Ctx: Context> fmt::Debug for SortedMultiVec<Pk, Ctx> {
211211
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
212212
fmt::Display::fmt(self, f)
213213
}
214214
}
215215

216-
impl<Pk: Key, Ctx: ScriptContext> fmt::Display for SortedMultiVec<Pk, Ctx> {
216+
impl<Pk: Key, Ctx: Context> fmt::Display for SortedMultiVec<Pk, Ctx> {
217217
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
218218
write!(f, "sortedmulti({}", self.k)?;
219219
for k in &self.pks {

src/descriptor/tr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::policy::Liftable;
1919
use crate::prelude::*;
2020
use crate::util::{varint_len, witness_size};
2121
use crate::{
22-
errstr, Error, ForEachKey, Key, Satisfier, ScriptContext, Tap, ToPublicKey, TranslateErr,
22+
errstr, Error, ForEachKey, Key, Satisfier, Context, Tap, ToPublicKey, TranslateErr,
2323
TranslatePk, Translator,
2424
};
2525

src/interpreter/inner.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use bitcoin::taproot::{ControlBlock, TAPROOT_ANNEX_PREFIX};
66
use bitcoin::Witness;
77

88
use super::{stack, BitcoinKey, Error, Stack};
9-
use crate::miniscript::context::{NoChecks, ScriptContext, SigType};
9+
use crate::miniscript::context::{NoChecks, Context, SigType};
1010
use crate::prelude::*;
1111
use crate::{BareCtx, ExtParams, Legacy, Miniscript, Segwitv0, Tap, ToPublicKey, Translator};
1212

@@ -38,7 +38,7 @@ fn pk_from_stack_elem(
3838

3939
// Parse the script with appropriate context to check for context errors like
4040
// correct usage of x-only keys or multi_a
41-
fn script_from_stack_elem<Ctx: ScriptContext>(
41+
fn script_from_stack_elem<Ctx: Context>(
4242
elem: &stack::Element<'_>,
4343
) -> Result<Miniscript<Ctx::Key, Ctx>, Error> {
4444
match *elem {
@@ -368,7 +368,7 @@ pub(super) trait ToNoChecks {
368368
fn to_no_checks_ms(&self) -> Miniscript<BitcoinKey, NoChecks>;
369369
}
370370

371-
impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::PublicKey, Ctx> {
371+
impl<Ctx: Context> ToNoChecks for Miniscript<bitcoin::PublicKey, Ctx> {
372372
fn to_no_checks_ms(&self) -> Miniscript<BitcoinKey, NoChecks> {
373373
struct TranslateFullPk;
374374

@@ -385,7 +385,7 @@ impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::PublicKey, Ctx> {
385385
}
386386
}
387387

388-
impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::key::XOnlyPublicKey, Ctx> {
388+
impl<Ctx: Context> ToNoChecks for Miniscript<bitcoin::key::XOnlyPublicKey, Ctx> {
389389
fn to_no_checks_ms(&self) -> Miniscript<BitcoinKey, NoChecks> {
390390
// specify the () error type as this cannot error
391391
struct TranslateXOnlyPk;

src/interpreter/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use bitcoin::hashes::{hash160, ripemd160, sha256, Hash};
1515
use bitcoin::{absolute, secp256k1, sighash, taproot, Sequence, TxOut, Witness};
1616

1717
use crate::miniscript::context::{NoChecks, SigType};
18-
use crate::miniscript::ScriptContext;
18+
use crate::miniscript::Context;
1919
use crate::prelude::*;
2020
use crate::{hash256, Descriptor, Miniscript, Terminal, ToPublicKey};
2121

@@ -540,7 +540,7 @@ pub struct Iter<'intp, 'txin: 'intp> {
540540
///Iterator for Iter
541541
impl<'intp, 'txin: 'intp> Iterator for Iter<'intp, 'txin>
542542
where
543-
NoChecks: ScriptContext,
543+
NoChecks: Context,
544544
{
545545
type Item = Result<SatisfiedConstraint, Error>;
546546

@@ -560,7 +560,7 @@ where
560560

561561
impl<'intp, 'txin: 'intp> Iter<'intp, 'txin>
562562
where
563-
NoChecks: ScriptContext,
563+
NoChecks: Context,
564564
{
565565
/// Helper function to push a NodeEvaluationState on state stack
566566
fn push_evaluation_state(

src/iter/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ pub use tree::{
1616
};
1717

1818
use crate::sync::Arc;
19-
use crate::{Key, Miniscript, ScriptContext, Terminal};
19+
use crate::{Key, Miniscript, Context, Terminal};
2020

21-
impl<'a, Pk: Key, Ctx: ScriptContext> TreeLike for &'a Miniscript<Pk, Ctx> {
21+
impl<'a, Pk: Key, Ctx: Context> TreeLike for &'a Miniscript<Pk, Ctx> {
2222
fn as_node(&self) -> Tree<Self> {
2323
match self.node {
2424
Terminal::PkK(..)
@@ -53,7 +53,7 @@ impl<'a, Pk: Key, Ctx: ScriptContext> TreeLike for &'a Miniscript<Pk, Ctx> {
5353
}
5454
}
5555

56-
impl<Pk: Key, Ctx: ScriptContext> TreeLike for Arc<Miniscript<Pk, Ctx>> {
56+
impl<Pk: Key, Ctx: Context> TreeLike for Arc<Miniscript<Pk, Ctx>> {
5757
fn as_node(&self) -> Tree<Self> {
5858
match self.node {
5959
Terminal::PkK(..)

src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ use bitcoin::locktime::absolute;
142142
pub use crate::descriptor::{DefiniteDescriptorKey, Descriptor, DescriptorPublicKey};
143143
pub use crate::interpreter::Interpreter;
144144
pub use crate::miniscript::analyzable::{AnalysisError, ExtParams};
145-
pub use crate::miniscript::context::{BareCtx, Legacy, ScriptContext, Segwitv0, SigType, Tap};
145+
pub use crate::miniscript::context::{BareCtx, Legacy, Context, Segwitv0, SigType, Tap};
146146
pub use crate::miniscript::decode::Terminal;
147147
pub use crate::miniscript::satisfy::{Preimage32, Satisfier};
148148
pub use crate::miniscript::{hash256, Miniscript};
@@ -532,7 +532,7 @@ pub enum Error {
532532
/// Errors related to lifting
533533
LiftError(policy::LiftError),
534534
/// Forward script context related errors
535-
ContextError(miniscript::context::ScriptContextError),
535+
ContextError(miniscript::context::ContextError),
536536
/// Recursion depth exceeded when parsing policy/miniscript from string
537537
MaxRecursiveDepthExceeded,
538538
/// Script size too large
@@ -694,7 +694,7 @@ impl error::Error for Error {
694694
impl<Pk, Ctx> From<miniscript::types::Error<Pk, Ctx>> for Error
695695
where
696696
Pk: Key,
697-
Ctx: ScriptContext,
697+
Ctx: Context,
698698
{
699699
fn from(e: miniscript::types::Error<Pk, Ctx>) -> Error {
700700
Error::TypeCheck(e.to_string())
@@ -709,8 +709,8 @@ impl From<policy::LiftError> for Error {
709709
}
710710

711711
#[doc(hidden)]
712-
impl From<miniscript::context::ScriptContextError> for Error {
713-
fn from(e: miniscript::context::ScriptContextError) -> Error {
712+
impl From<miniscript::context::ContextError> for Error {
713+
fn from(e: miniscript::context::ContextError) -> Error {
714714
Error::ContextError(e)
715715
}
716716
}

src/miniscript/analyzable.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use core::fmt;
1111
use std::error;
1212

1313
use crate::prelude::*;
14-
use crate::{Key, Miniscript, ScriptContext, Terminal};
14+
use crate::{Key, Miniscript, Context, Terminal};
1515

1616
/// Params for parsing miniscripts that either non-sane or non-specified(experimental) in the spec.
1717
/// Used as a parameter [`Miniscript::from_str_ext`] and [`Miniscript::parse_with_ext`].
@@ -185,7 +185,7 @@ impl error::Error for AnalysisError {
185185
}
186186
}
187187

188-
impl<Pk: Key, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
188+
impl<Pk: Key, Ctx: Context> Miniscript<Pk, Ctx> {
189189
/// Whether all spend paths of miniscript require a signature
190190
pub fn requires_sig(&self) -> bool {
191191
self.ty.mall.safe

src/miniscript/astelem.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ use sync::Arc;
1717

1818
use crate::miniscript::context::SigType;
1919
use crate::miniscript::types::{self, Property};
20-
use crate::miniscript::ScriptContext;
20+
use crate::miniscript::Context;
2121
use crate::prelude::*;
2222
use crate::util::MsKeyBuilder;
2323
use crate::{errstr, expression, AbsLockTime, Error, Key, Miniscript, Terminal, ToPublicKey};
2424

25-
impl<Pk: Key, Ctx: ScriptContext> Terminal<Pk, Ctx> {
25+
impl<Pk: Key, Ctx: Context> Terminal<Pk, Ctx> {
2626
/// Internal helper function for displaying wrapper types; returns
2727
/// a character to display before the `:` as well as a reference
2828
/// to the wrapped type to allow easy recursion
@@ -43,7 +43,7 @@ impl<Pk: Key, Ctx: ScriptContext> Terminal<Pk, Ctx> {
4343
}
4444
}
4545

46-
impl<Pk: Key, Ctx: ScriptContext> fmt::Debug for Terminal<Pk, Ctx> {
46+
impl<Pk: Key, Ctx: Context> fmt::Debug for Terminal<Pk, Ctx> {
4747
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4848
f.write_str("[")?;
4949
if let Ok(type_map) = types::Type::type_check(self, |_| None) {
@@ -141,7 +141,7 @@ impl<Pk: Key, Ctx: ScriptContext> fmt::Debug for Terminal<Pk, Ctx> {
141141
}
142142
}
143143

144-
impl<Pk: Key, Ctx: ScriptContext> fmt::Display for Terminal<Pk, Ctx> {
144+
impl<Pk: Key, Ctx: Context> fmt::Display for Terminal<Pk, Ctx> {
145145
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
146146
match *self {
147147
Terminal::PkK(ref pk) => write!(f, "pk_k({})", pk),
@@ -241,15 +241,15 @@ impl<Pk: Key, Ctx: ScriptContext> fmt::Display for Terminal<Pk, Ctx> {
241241
}
242242

243243
impl_from_tree!(
244-
;Ctx; ScriptContext,
244+
;Ctx; Context,
245245
Arc<Terminal<Pk, Ctx>>,
246246
fn from_tree(top: &expression::Tree) -> Result<Arc<Terminal<Pk, Ctx>>, Error> {
247247
Ok(Arc::new(expression::FromTree::from_tree(top)?))
248248
}
249249
);
250250

251251
impl_from_tree!(
252-
;Ctx; ScriptContext,
252+
;Ctx; Context,
253253
Terminal<Pk, Ctx>,
254254
fn from_tree(top: &expression::Tree) -> Result<Terminal<Pk, Ctx>, Error> {
255255
let mut aliased_wrap;
@@ -430,13 +430,13 @@ impl_from_tree!(
430430
);
431431

432432
/// Helper trait to add a `push_astelem` method to `script::Builder`
433-
trait PushAstElem<Pk: Key, Ctx: ScriptContext> {
433+
trait PushAstElem<Pk: Key, Ctx: Context> {
434434
fn push_astelem(self, ast: &Miniscript<Pk, Ctx>) -> Self
435435
where
436436
Pk: ToPublicKey;
437437
}
438438

439-
impl<Pk: Key, Ctx: ScriptContext> PushAstElem<Pk, Ctx> for script::Builder {
439+
impl<Pk: Key, Ctx: Context> PushAstElem<Pk, Ctx> for script::Builder {
440440
fn push_astelem(self, ast: &Miniscript<Pk, Ctx>) -> Self
441441
where
442442
Pk: ToPublicKey,
@@ -445,7 +445,7 @@ impl<Pk: Key, Ctx: ScriptContext> PushAstElem<Pk, Ctx> for script::Builder {
445445
}
446446
}
447447

448-
impl<Pk: Key, Ctx: ScriptContext> Terminal<Pk, Ctx> {
448+
impl<Pk: Key, Ctx: Context> Terminal<Pk, Ctx> {
449449
/// Encode the element as a fragment of Bitcoin Script. The inverse
450450
/// function, from Script to an AST element, is implemented in the
451451
/// `parse` module.

0 commit comments

Comments
 (0)