Skip to content

Commit

Permalink
stl: reverse previous changes
Browse files Browse the repository at this point in the history
  • Loading branch information
dr-orlovsky committed Oct 7, 2023
1 parent 2798bf7 commit 49b7d80
Show file tree
Hide file tree
Showing 9 changed files with 190 additions and 140 deletions.
2 changes: 1 addition & 1 deletion primitives/src/stl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ pub const LIB_ID_BITCOIN: &str =
pub const LIB_ID_BP_TX: &str =
"urn:ubideco:stl:6GgF7biXPVNcus2FfQj2pQuRzau11rXApMQLfCZhojgi#money-pardon-parody";
pub const LIB_ID_BP_CONSENSUS: &str =
"urn:ubideco:stl:DxmVFuGffDNS1w5tBAhWS798qXBCqDtpmVPQanLbmBRX#vendor-inside-forum";
"urn:ubideco:stl:D42LxJBQokrGJzvoSV3E1HoriGgLzPcxuL61JymwjEqV#arena-complex-husband";

#[deprecated(since = "0.10.8", note = "use _bp_tx_stl instead")]
fn _bitcoin_stl() -> Result<TypeLib, CompileError> { _bp_tx_stl() }
Expand Down
94 changes: 74 additions & 20 deletions primitives/src/taproot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,25 @@ const MIDSTATE_TAPSIGHASH: [u8; 10] = *b"TapSighash";

#[derive(Copy, Clone, Eq, PartialEq, Debug, Display, Error)]
#[display("invalid public key")]
pub struct InvalidPubkey;
pub struct InvalidPubkey(pub Bytes32);

impl From<InvalidPubkey> for DecodeError {
fn from(e: InvalidPubkey) -> Self {
DecodeError::DataIntegrityError(format!("invalid x-only public key value '{:x}'", e.0))
}
}

macro_rules! dumb_key {
() => {
Self(XOnlyPublicKey::from_slice(&[1u8; 32]).unwrap())
};
}

#[derive(Wrapper, WrapperMut, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug, From)]
#[wrapper(Deref, LowerHex, Display, FromStr)]
#[wrapper_mut(DerefMut)]
#[derive(StrictType, StrictDumb)]
#[strict_type(lib = LIB_NAME_BITCOIN, dumb = { Self(XOnlyPublicKey::from_slice(&[1u8; 32]).unwrap()) })]
#[strict_type(lib = LIB_NAME_BITCOIN, dumb = dumb_key!())]
#[cfg_attr(
feature = "serde",
derive(Serialize, Deserialize),
Expand All @@ -75,7 +87,7 @@ impl TaprootPk {
pub fn from_byte_array(data: [u8; 32]) -> Result<Self, InvalidPubkey> {
XOnlyPublicKey::from_slice(data.as_ref())
.map(Self)
.map_err(|_| InvalidPubkey)
.map_err(|_| InvalidPubkey(data.into()))
}

pub fn to_byte_array(&self) -> [u8; 32] { self.0.serialize() }
Expand All @@ -102,38 +114,39 @@ impl StrictDecode for TaprootPk {
let bytes: Bytes32 = r.read_field()?;
XOnlyPublicKey::from_slice(bytes.as_slice())
.map(Self)
.map_err(|_| {
DecodeError::DataIntegrityError(format!(
"invalid x-only public key value '{bytes:x}'"
))
})
.map_err(|_| InvalidPubkey(bytes).into())
})
}
}

#[derive(Wrapper, WrapperMut, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug, From)]
#[wrapper(Deref, LowerHex, Display, FromStr)]
#[wrapper_mut(DerefMut)]
#[derive(StrictType, StrictEncode, StrictDecode, StrictDumb)]
#[strict_type(lib = LIB_NAME_BITCOIN, dumb = Self(strict_dumb!()))]
#[derive(StrictType, StrictDumb)]
#[strict_type(lib = LIB_NAME_BITCOIN, dumb = dumb_key!())]
#[cfg_attr(
feature = "serde",
derive(Serialize, Deserialize),
serde(crate = "serde_crate", transparent)
)]
pub struct InternalPk(TaprootPk);
pub struct InternalPk(XOnlyPublicKey);

impl InternalPk {
#[inline]
pub fn from_unchecked(pk: TaprootPk) -> Self { Self(pk.0) }

pub fn from_byte_array(data: [u8; 32]) -> Result<Self, InvalidPubkey> {
TaprootPk::from_byte_array(data).map(Self)
XOnlyPublicKey::from_slice(&data)
.map(Self)
.map_err(|_| InvalidPubkey(data.into()))
}

pub fn to_byte_array(&self) -> [u8; 32] { self.0.to_byte_array() }
pub fn to_byte_array(&self) -> [u8; 32] { self.0.serialize() }

#[deprecated(since = "0.10.9", note = "use to_output_pk")]
pub fn to_output_key(&self, merkle_root: Option<impl IntoTapHash>) -> XOnlyPublicKey {
let (pk, _) = self.to_output_pk(merkle_root);
pk.0.0
pk.0
}

pub fn to_output_pk(&self, merkle_root: Option<impl IntoTapHash>) -> (OutputPk, Parity) {
Expand All @@ -155,38 +168,79 @@ impl InternalPk {
tweaked_parity,
tweak
));
(OutputPk(TaprootPk(output_key)), tweaked_parity.into())
(OutputPk(output_key), tweaked_parity.into())
}
}

impl From<InternalPk> for [u8; 32] {
fn from(pk: InternalPk) -> [u8; 32] { pk.to_byte_array() }
}

impl StrictEncode for InternalPk {
fn strict_encode<W: TypedWrite>(&self, writer: W) -> io::Result<W> {
let bytes = Bytes32::from(self.0.serialize());
writer.write_newtype::<Self>(&bytes)
}
}

impl StrictDecode for InternalPk {
fn strict_decode(reader: &mut impl TypedRead) -> Result<Self, DecodeError> {
reader.read_tuple(|r| {
let bytes: Bytes32 = r.read_field()?;
XOnlyPublicKey::from_slice(bytes.as_slice())
.map(Self)
.map_err(|_| InvalidPubkey(bytes).into())
})
}
}

#[derive(Wrapper, WrapperMut, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug, From)]
#[wrapper(Deref, LowerHex, Display, FromStr)]
#[wrapper_mut(DerefMut)]
#[derive(StrictType, StrictEncode, StrictDecode, StrictDumb)]
#[strict_type(lib = LIB_NAME_BITCOIN, dumb = Self(strict_dumb!()))]
#[derive(StrictType, StrictDumb)]
#[strict_type(lib = LIB_NAME_BITCOIN, dumb = dumb_key!())]
#[cfg_attr(
feature = "serde",
derive(Serialize, Deserialize),
serde(crate = "serde_crate", transparent)
)]
pub struct OutputPk(TaprootPk);
pub struct OutputPk(XOnlyPublicKey);

impl OutputPk {
#[inline]
pub fn from_unchecked(pk: TaprootPk) -> Self { Self(pk.0) }

pub fn from_byte_array(data: [u8; 32]) -> Result<Self, InvalidPubkey> {
TaprootPk::from_byte_array(data).map(Self)
XOnlyPublicKey::from_slice(&data)
.map(Self)
.map_err(|_| InvalidPubkey(data.into()))
}

pub fn to_byte_array(&self) -> [u8; 32] { self.0.to_byte_array() }
pub fn to_byte_array(&self) -> [u8; 32] { self.0.serialize() }
}

impl From<OutputPk> for [u8; 32] {
fn from(pk: OutputPk) -> [u8; 32] { pk.to_byte_array() }
}

impl StrictEncode for OutputPk {
fn strict_encode<W: TypedWrite>(&self, writer: W) -> io::Result<W> {
let bytes = Bytes32::from(self.0.serialize());
writer.write_newtype::<Self>(&bytes)
}
}

impl StrictDecode for OutputPk {
fn strict_decode(reader: &mut impl TypedRead) -> Result<Self, DecodeError> {
reader.read_tuple(|r| {
let bytes: Bytes32 = r.read_field()?;
XOnlyPublicKey::from_slice(bytes.as_slice())
.map(Self)
.map_err(|_| InvalidPubkey(bytes).into())
})
}
}

pub trait IntoTapHash {
fn into_tap_hash(self) -> TapNodeHash;
}
Expand Down
2 changes: 1 addition & 1 deletion src/stl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ use strict_types::{CompileError, LibBuilder, TypeLib};
/// Strict types id for the library providing data types from [`dbc`] and
/// [`seals`] crates.
pub const LIB_ID_BPCORE: &str =
"urn:ubideco:stl:5cbnbTwuKKKpRqh9WJejEKXcWahnHc3jgwBeJCNr48cL#gyro-minute-maestro";
"urn:ubideco:stl:2YsxMW6xygK2FxFSbbBLqmzaUSytmLHHNF9DRio5zNr2#sultan-data-copy";

fn _bp_core_stl() -> Result<TypeLib, CompileError> {
LibBuilder::new(libname!(LIB_NAME_BPCORE), tiny_bset! {
Expand Down
116 changes: 58 additions & 58 deletions stl/[email protected]
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-----BEGIN STRICT TYPE LIB-----
Id: urn:ubideco:stl:5cbnbTwuKKKpRqh9WJejEKXcWahnHc3jgwBeJCNr48cL
Id: urn:ubideco:stl:2YsxMW6xygK2FxFSbbBLqmzaUSytmLHHNF9DRio5zNr2
Name: BPCore
Dependencies:
urn:ubideco:stl:ZtHaBzu9ojbDahaGKEXe5v9DfSDxLERbLkEB23R6Q6V,
Expand All @@ -8,68 +8,68 @@ Dependencies:

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
yeXSYny/w/Q2st1s1NG5sERb/17vgnZyd1ch4z5Dxapc8iknU6M4wWftO2OcTdnO
vamPNGkXuslDdQhibGluZGluZwAACAtDbG9zZU1ldGhvZAMCCm9wcmV0Rmlyc3QA
C3RhcHJldEZpcnN0ARFFeHBsaWNpdFNlYWxUeFB0cgYDBm1ldGhvZAHSUjB8fXGQ
NfcwfugoJewbgSuhh92dmEmLSo0W+m7VQwR0eGlkAbHlODkUCji+8G8az74cYKVv
4eH0fXgIKHm/0frTECHdBHZvdXQCTk6E9HAWyeXSYny/w/Q2st1s1NG5sERb/17v
gnZyd1ch4z5Dxapc8iknU6M4wWftO2OcTdnOvamPNGkXuslDdRBFeHBsaWNpdFNl
YWxUeGlkBgMGbWV0aG9kAdJSMHx9cZA19zB+6Cgl7BuBK6GH3Z2YSYtKjRb6btVD
BHR4aWQCTk6E9HAWyeXSYny/w/Q2st1s1NG5sERb/17vgnZyd1ejgkLzy9fR0KES
2o3hYC9W1PhvDsTEdsXAaFlMSwRlVgR2b3V0Ak5OhPRwFsnl0mJ8v8P0NrLdbNTR
ubBEW/9e74J2cndXIeM+Q8WqXPIpJ1OjOMFn7TtjnE3Zzr2pjzRpF7rJQ3UFUHJv
b2YEAgAKb3ByZXRGaXJzdAAAAAELdGFwcmV0Rmlyc3QABQEBw7JLtgSdryy0A9M+
AJxUQp4pH1QTsu22i8UWoA+Nk/wKU2VjcmV0U2VhbAUBAAcAAEAgABFUYXByZXRO
b2RlUGFydG5lcgQDAAhsZWZ0Tm9kZQAFAQJOToT0cBbJ5dJifL/D9Day3WzU0bmw
RFv/Xu+CdnJ3VzG7ruiEiXfFsAcxcjHNkvYwtiktzYl/3LrexbrE6X/ZAQlyaWdo
dExlYWYABQECTk6E9HAWyeXSYny/w/Q2st1s1NG5sERb/17vgnZyd1dfrNlt5T9O
xRTZsY1ngNoKq+stJgv9Ny2jwHqkXTmfTQILcmlnaHRCcmFuY2gABQEBOD9iLnFT
0sghkTzLdx2fPWTfdvIoVVkt+EZDlBZNbQUPVGFwcmV0UGF0aFByb29mBgILcGFy
dG5lck5vZGUABAIABG5vbmUAAAABBHNvbWUABQEBAXwHXQBASxaVmBsXw2Etxrjq
rg1/cFlikhZ1WuUZkxEFbm9uY2UAAAELVGFwcmV0UHJvb2YGAglwYXRoUHJvb2YB
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
Rmlyc3QAC3RhcHJldEZpcnN0ARFFeHBsaWNpdFNlYWxUeFB0cgYDBm1ldGhvZAHS
UjB8fXGQNfcwfugoJewbgSuhh92dmEmLSo0W+m7VQwR0eGlkAbHlODkUCji+8G8a
z74cYKVv4eH0fXgIKHm/0frTECHdBHZvdXQCTk6E9HAWyeXSYny/w/Q2st1s1NG5
sERb/17vgnZyd1ch4z5Dxapc8iknU6M4wWftO2OcTdnOvamPNGkXuslDdRBFeHBs
aWNpdFNlYWxUeGlkBgMGbWV0aG9kAdJSMHx9cZA19zB+6Cgl7BuBK6GH3Z2YSYtK
jRb6btVDBHR4aWQCTk6E9HAWyeXSYny/w/Q2st1s1NG5sERb/17vgnZyd1ejgkLz
y9fR0KES2o3hYC9W1PhvDsTEdsXAaFlMSwRlVgR2b3V0Ak5OhPRwFsnl0mJ8v8P0
NrLdbNTRubBEW/9e74J2cndXIeM+Q8WqXPIpJ1OjOMFn7TtjnE3Zzr2pjzRpF7rJ
Q3UFUHJvb2YEAgAKb3ByZXRGaXJzdAAAAAELdGFwcmV0Rmlyc3QABQEBGyc5NK5H
VuHrx50i/fbG0qXZSO79Qa2pcwuGhQ73eTAKU2VjcmV0U2VhbAUBAAcAAEAgABFU
YXByZXROb2RlUGFydG5lcgQDAAhsZWZ0Tm9kZQAFAQJOToT0cBbJ5dJifL/D9Day
3WzU0bmwRFv/Xu+CdnJ3VzG7ruiEiXfFsAcxcjHNkvYwtiktzYl/3LrexbrE6X/Z
AQlyaWdodExlYWYABQECTk6E9HAWyeXSYny/w/Q2st1s1NG5sERb/17vgnZyd1df
rNlt5T9OxRTZsY1ngNoKq+stJgv9Ny2jwHqkXTmfTQILcmlnaHRCcmFuY2gABQEB
OD9iLnFT0sghkTzLdx2fPWTfdvIoVVkt+EZDlBZNbQUPVGFwcmV0UGF0aFByb29m
BgILcGFydG5lck5vZGUABAIABG5vbmUAAAABBHNvbWUABQEBAXwHXQBASxaVmBsX
w2Etxrjqrg1/cFlikhZ1WuUZkxEFbm9uY2UAAAELVGFwcmV0UHJvb2YGAglwYXRo
UHJvb2YBE8RTUmYnu0QljDtn9MzCfv785Ce3z14P/YGPL3572HwKaW50ZXJuYWxQ
awJOToT0cBbJ5dJifL/D9Day3WzU0bmwRFv/Xu+CdnJ3V9/4ADyB/kf8VCOx0sbi
Dw3fqma9zPN9dBPJH2XaADyIEVRhcHJldFJpZ2h0QnJhbmNoBgIMbGVmdE5vZGVI
YXNoAk5OhPRwFsnl0mJ8v8P0NrLdbNTRubBEW/9e74J2cndXMbuu6ISJd8WwBzFy
Mc2S9jC2KS3NiX/cut7FusTpf9kNcmlnaHROb2RlSGFzaAJOToT0cBbJ5dJifL/D
9Day3WzU0bmwRFv/Xu+CdnJ3VzG7ruiEiXfFsAcxcjHNkvYwtiktzYl/3LrexbrE
6X/ZBVR4UHRyBAIACXdpdG5lc3NUeAAAAAEEdHhpZAAFAQJOToT0cBbJ5dJifL/D
9Day3WzU0bmwRFv/Xu+CdnJ3V6OCQvPL19HQoRLajeFgL1bU+G8OxMR2xcBoWUxL
BGVW

-----END STRICT TYPE LIB-----

Binary file modified stl/[email protected]
Binary file not shown.
9 changes: 4 additions & 5 deletions stl/[email protected]
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{-
Id: urn:ubideco:stl:5cbnbTwuKKKpRqh9WJejEKXcWahnHc3jgwBeJCNr48cL#gyro-minute-maestro
Id: urn:ubideco:stl:2YsxMW6xygK2FxFSbbBLqmzaUSytmLHHNF9DRio5zNr2#sultan-data-copy
Name: BPCore
Version: 0.1.0
Description: Bitcoin client-side-validation library
Expand Down Expand Up @@ -28,8 +28,7 @@ import urn:ubideco:stl:6GgF7biXPVNcus2FfQj2pQuRzau11rXApMQLfCZhojgi#money-pardon
-- LeafScript := urn:ubideco:semid:7SUbonQ62tSaBTPpbZPACQo2NogXodi2mW5WEEDfBvp4#brenda-round-micro
-- Txid := urn:ubideco:semid:C1GfCrG7AXu2sFhRBspd7KpJK2YgyTkVy6pty5rZynRs#cowboy-diego-betty
-- LeafVer := urn:ubideco:semid:DGELfUvcU62GNQRo7HaMbKDzYQwdYRMW3b91JHd4d3WY#tunnel-lagoon-cowboy
-- InternalPk := urn:ubideco:semid:DkgLteYQvM5jASrE2R8Z2z1jmzgwrnVNGBXLPoa8gDm5#monaco-special-needle
-- TaprootPk := urn:ubideco:semid:DufbiodesBkHAgaCpqgXzZYoJa97fEMjmTBxr6JoVATF#sound-humor-adam
-- InternalPk := urn:ubideco:semid:G5HFVaWwWNYSzqk548JgGZ8WKy6dQ2ftVgkJvHjgRudZ#horse-major-vienna

import urn:ubideco:stl:9KALDYR8Nyjq4FdMW6kYoL7vdkWnqPqNuFnmE9qHpNjZ#justice-rocket-type as Std
-- Imports:
Expand Down Expand Up @@ -83,8 +82,8 @@ data TapretNodePartner :: leftNode Bitcoin.TapNodeHash {- urn:ubideco:semid:4M8x
| rightBranch TapretRightBranch
-- urn:ubideco:semid:BPYcTtbxvzWp8h7SMapT14FzLCnrnGzSShHTWGHCSD4C#clark-magic-salon
data TapretPathProof :: partnerNode TapretNodePartner?, nonce U8
-- urn:ubideco:semid:CWF7gRmqznx45aDH9ubzkYaxswU2xmvo8CNdNWRtaDrW#stamp-inca-drama
data TapretProof :: pathProof TapretPathProof, internalPk Bitcoin.InternalPk {- urn:ubideco:semid:DkgLteYQvM5jASrE2R8Z2z1jmzgwrnVNGBXLPoa8gDm5#monaco-special-needle -}
-- urn:ubideco:semid:7QQkknWxkJLkef2AJrPSH3q165rB8ZTAUofNwW3ia5im#helena-wizard-podium
data TapretProof :: pathProof TapretPathProof, internalPk Bitcoin.InternalPk {- urn:ubideco:semid:G5HFVaWwWNYSzqk548JgGZ8WKy6dQ2ftVgkJvHjgRudZ#horse-major-vienna -}
-- urn:ubideco:semid:4nZtVVw7QJaMDHYffkHBWhxXSkLXLcJ89qTLZH4Z3xck#basket-prelude-bridge
data TapretRightBranch :: leftNodeHash Bitcoin.TapNodeHash {- urn:ubideco:semid:4M8xyvABKKKJseN6Pme5eKrAuusMNMXoY5s6ifsEcreC#crash-culture-jamaica -}, rightNodeHash Bitcoin.TapNodeHash {- urn:ubideco:semid:4M8xyvABKKKJseN6Pme5eKrAuusMNMXoY5s6ifsEcreC#crash-culture-jamaica -}
-- urn:ubideco:semid:CyRtMpPJkKLX3AdhgY7ZyA7PnYAzCo7yFTeYwwGsUBhn#strange-source-father
Expand Down
Loading

0 comments on commit 49b7d80

Please sign in to comment.