From 54f19cda814e307ff16e09148804148e74478d48 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Fri, 11 Oct 2024 21:32:49 +0200 Subject: [PATCH 1/5] persistence: fix removed terminal info from index on secret seal re-use Closes #275 --- src/persistence/memory.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/persistence/memory.rs b/src/persistence/memory.rs index 7d4ce810..1a8490ca 100644 --- a/src/persistence/memory.rs +++ b/src/persistence/memory.rs @@ -1516,7 +1516,10 @@ impl MemIndex { .remove(&seal) .expect("can have zero elements") { - Some(mut existing_opouts) => existing_opouts.push(opout)?, + Some(mut existing_opouts) => { + existing_opouts.push(opout)?; + let _ = self.terminal_index.insert(seal, existing_opouts); + } None => { self.terminal_index.insert(seal, tiny_bset![opout])?; } From 8d0bc854e7427ab1388cbfad6747f99cf65c5b0e Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Sat, 12 Oct 2024 13:37:15 +0200 Subject: [PATCH 2/5] fix mismatch between anchored bundles dichotomies in persistence and containers --- src/containers/anchors.rs | 274 ++++++- src/containers/consignment.rs | 5 +- src/containers/indexed.rs | 19 +- src/containers/mod.rs | 5 +- src/containers/partials.rs | 65 +- src/contract/bundle.rs | 68 -- src/contract/mod.rs | 2 - src/lib.rs | 5 +- src/persistence/index.rs | 11 +- src/persistence/memory.rs | 17 +- src/persistence/stash.rs | 99 ++- src/persistence/state.rs | 24 +- src/persistence/stock.rs | 75 +- src/stl/stl.rs | 4 +- stl/RGBStd@0.11.0.sta | 581 ++++++++------- stl/RGBStd@0.11.0.stl | Bin 18436 -> 18876 bytes stl/RGBStd@0.11.0.sty | 27 +- stl/RGBStorage@0.11.0.sta | 115 ++- stl/RGBStorage@0.11.0.stl | Bin 13065 -> 13047 bytes stl/RGBStorage@0.11.0.sty | 94 +-- stl/Transfer.vesper | 1323 ++++++++++++++++++++++++++------- 21 files changed, 1956 insertions(+), 857 deletions(-) delete mode 100644 src/contract/bundle.rs diff --git a/src/containers/anchors.rs b/src/containers/anchors.rs index d9beb866..2ac5580b 100644 --- a/src/containers/anchors.rs +++ b/src/containers/anchors.rs @@ -20,18 +20,36 @@ // limitations under the License. use std::cmp::Ordering; +use std::vec; use amplify::ByteArray; use bp::dbc::opret::OpretProof; use bp::dbc::tapret::TapretProof; use bp::dbc::{anchor, Anchor}; -use bp::{Tx, Txid}; +use bp::{dbc, Tx, Txid}; use commit_verify::mpc; -use rgb::validation::DbcProof; -use rgb::{BundleId, DiscloseHash, TransitionBundle, XChain, XWitnessId}; +use rgb::validation::{DbcProof, EAnchor}; +use rgb::{ + BundleId, DiscloseHash, OpId, Operation, Transition, TransitionBundle, XChain, XGraphSeal, + XWitnessId, +}; use strict_encoding::StrictDumb; -use crate::{MergeReveal, MergeRevealError, LIB_NAME_RGB_STD}; +use crate::containers::Dichotomy; +use crate::{MergeReveal, MergeRevealError, TypedAssignsExt, LIB_NAME_RGB_STD}; + +#[derive(Clone, Eq, PartialEq, Debug, Display, Error)] +#[display("state transition {0} is not a part of the bundle.")] +pub struct UnrelatedTransition(OpId, Transition); + +#[derive(Copy, Clone, Eq, PartialEq, Debug, Display, Error)] +#[display(doc_comments)] +pub enum AnchoredBundleMismatch { + /// witness bundle for witness id {0} already has both opret and tapret information. + AlreadyDouble(XWitnessId), + /// the combined anchored bundles for witness id {0} are of the same type. + SameBundleType(XWitnessId), +} #[derive(Clone, Eq, PartialEq, Debug)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] @@ -159,36 +177,256 @@ impl PubWitness { )] #[derive(CommitEncode)] #[commit_encode(strategy = strict, id = DiscloseHash)] -pub struct WitnessBundle { +pub struct WitnessBundle { pub pub_witness: XPubWitness, - pub anchor: Anchor, - pub bundle: TransitionBundle, + pub anchored_bundles: AnchoredBundles, } -impl PartialEq for WitnessBundle

{ +impl PartialEq for WitnessBundle { fn eq(&self, other: &Self) -> bool { self.pub_witness == other.pub_witness } } -impl Ord for WitnessBundle

{ +impl Ord for WitnessBundle { fn cmp(&self, other: &Self) -> Ordering { self.pub_witness.cmp(&other.pub_witness) } } -impl PartialOrd for WitnessBundle

{ +impl PartialOrd for WitnessBundle { fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } } -impl WitnessBundle { +impl WitnessBundle { + #[inline] + pub fn with(pub_witness: XPubWitness, anchored_bundle: ClientBundle) -> Self { + Self { + pub_witness, + anchored_bundles: AnchoredBundles::from(anchored_bundle), + } + } + + pub fn into_double(mut self, other: ClientBundle) -> Result { + match (self.anchored_bundles, other.dbc_proof) { + (AnchoredBundles::Double { .. }, _) => { + return Err(AnchoredBundleMismatch::AlreadyDouble( + self.pub_witness.to_witness_id(), + )); + } + (AnchoredBundles::Opret(opret), DbcProof::Tapret(tapret)) => { + self.anchored_bundles = AnchoredBundles::Double { + tapret: ClientBundle::new(other.mpc_proof, tapret, other.bundle), + opret, + } + } + (AnchoredBundles::Tapret(tapret), DbcProof::Opret(opret)) => { + self.anchored_bundles = AnchoredBundles::Double { + opret: ClientBundle::new(other.mpc_proof, opret, other.bundle), + tapret, + } + } + _ => { + return Err(AnchoredBundleMismatch::SameBundleType( + self.pub_witness.to_witness_id(), + )); + } + } + Ok(self) + } + pub fn witness_id(&self) -> XWitnessId { self.pub_witness.to_witness_id() } + + pub fn reveal_seal(&mut self, bundle_id: BundleId, seal: XGraphSeal) -> bool { + let bundle = match &mut self.anchored_bundles { + AnchoredBundles::Tapret(tapret) | AnchoredBundles::Double { tapret, .. } + if tapret.bundle.bundle_id() == bundle_id => + { + Some(&mut tapret.bundle) + } + AnchoredBundles::Opret(opret) | AnchoredBundles::Double { opret, .. } + if opret.bundle.bundle_id() == bundle_id => + { + Some(&mut opret.bundle) + } + _ => None, + }; + let Some(bundle) = bundle else { + return false; + }; + bundle + .known_transitions + .values_mut() + .flat_map(|t| t.assignments.values_mut()) + .for_each(|a| a.reveal_seal(seal)); + + true + } + + pub fn anchored_bundles(&self) -> impl Iterator { + self.anchored_bundles.iter() + } + + #[inline] + pub fn known_transitions(&self) -> impl Iterator { + self.anchored_bundles + .bundles() + .flat_map(|bundle| bundle.known_transitions.values()) + } } -impl WitnessBundle { - pub fn merge_reveal(mut self, other: Self) -> Result { - self.pub_witness = self.pub_witness.merge_reveal(other.pub_witness)?; - if self.anchor != other.anchor { - return Err(MergeRevealError::AnchorsNonEqual(self.bundle.bundle_id())); +/// Keeps client-side data - a combination of client-side witness (anchor) and state (transition +/// bundle). Ensures that transition bundle uses the same DBC close method as used by the +/// client-side witness (anchor). +#[derive(Clone, PartialEq, Eq, Debug)] +#[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] +#[strict_type(lib = LIB_NAME_RGB_STD)] +#[cfg_attr( + feature = "serde", + derive(Serialize, Deserialize), + serde(crate = "serde_crate", rename_all = "camelCase") +)] +pub struct ClientBundle { + mpc_proof: mpc::MerkleProof, + dbc_proof: D, + bundle: TransitionBundle, +} + +impl ClientBundle { + /// # Panics + /// + /// Panics if DBC proof and bundle have different closing methods + pub fn new(mpc_proof: mpc::MerkleProof, dbc_proof: D, bundle: TransitionBundle) -> Self { + assert_eq!(D::METHOD, bundle.close_method); + Self { + mpc_proof, + dbc_proof, + bundle, } - self.bundle = self.bundle.merge_reveal(other.bundle)?; - Ok(self) + } + + #[inline] + pub fn bundle_id(&self) -> BundleId { self.bundle.bundle_id() } + + pub fn reveal_transition( + &mut self, + transition: Transition, + ) -> Result { + let opid = transition.id(); + if self.bundle.input_map.values().all(|id| *id != opid) { + return Err(UnrelatedTransition(opid, transition)); + } + if self.bundle.known_transitions.contains_key(&opid) { + return Ok(false); + } + self.bundle + .known_transitions + .insert(opid, transition) + .expect("same size as input map"); + Ok(true) + } +} + +#[derive(Clone, PartialEq, Eq, Debug)] +#[derive(StrictType, StrictEncode, StrictDecode)] +#[strict_type(lib = LIB_NAME_RGB_STD, tags = custom)] +#[cfg_attr( + feature = "serde", + derive(Serialize, Deserialize), + serde(crate = "serde_crate", rename_all = "camelCase") +)] +pub enum AnchoredBundles { + #[strict_type(tag = 0x01)] + Tapret(ClientBundle), + #[strict_type(tag = 0x02)] + Opret(ClientBundle), + #[strict_type(tag = 0x03)] + Double { + tapret: ClientBundle, + opret: ClientBundle, + }, +} + +impl StrictDumb for AnchoredBundles { + fn strict_dumb() -> Self { Self::Opret(strict_dumb!()) } +} + +impl From for AnchoredBundles { + fn from(ab: ClientBundle) -> Self { + match ab.dbc_proof { + DbcProof::Opret(proof) => { + Self::Opret(ClientBundle::::new(ab.mpc_proof, proof, ab.bundle)) + } + DbcProof::Tapret(proof) => { + Self::Tapret(ClientBundle::::new(ab.mpc_proof, proof, ab.bundle)) + } + } + } +} + +impl AnchoredBundles { + pub fn bundles(&self) -> impl Iterator { + match self { + AnchoredBundles::Tapret(tapret) => Dichotomy::single(&tapret.bundle), + AnchoredBundles::Opret(opret) => Dichotomy::single(&opret.bundle), + AnchoredBundles::Double { tapret, opret } => { + Dichotomy::double(&tapret.bundle, &opret.bundle) + } + } + .into_iter() + } + + pub fn into_bundles(self) -> impl Iterator { + match self { + AnchoredBundles::Tapret(tapret) => Dichotomy::single(tapret.bundle), + AnchoredBundles::Opret(opret) => Dichotomy::single(opret.bundle), + AnchoredBundles::Double { tapret, opret } => { + Dichotomy::double(tapret.bundle, opret.bundle) + } + } + .into_iter() + } + + pub fn iter(&self) -> impl Iterator { + match self { + AnchoredBundles::Tapret(tapret) => { + let anchor = + EAnchor::new(tapret.mpc_proof.clone(), tapret.dbc_proof.clone().into()); + Dichotomy::single((anchor, &tapret.bundle)) + } + AnchoredBundles::Opret(opret) => { + let anchor = EAnchor::new(opret.mpc_proof.clone(), opret.dbc_proof.clone().into()); + Dichotomy::single((anchor, &opret.bundle)) + } + AnchoredBundles::Double { tapret, opret } => { + let tapret_anchor = + EAnchor::new(tapret.mpc_proof.clone(), tapret.dbc_proof.clone().into()); + let opret_anchor = + EAnchor::new(opret.mpc_proof.clone(), opret.dbc_proof.clone().into()); + Dichotomy::double((tapret_anchor, &tapret.bundle), (opret_anchor, &opret.bundle)) + } + } + .into_iter() + } +} + +impl IntoIterator for AnchoredBundles { + type Item = (EAnchor, TransitionBundle); + type IntoIter = vec::IntoIter<(EAnchor, TransitionBundle)>; + + fn into_iter(self) -> Self::IntoIter { + match self { + AnchoredBundles::Tapret(tapret) => { + let anchor = EAnchor::new(tapret.mpc_proof, tapret.dbc_proof.into()); + Dichotomy::single((anchor, tapret.bundle)) + } + AnchoredBundles::Opret(opret) => { + let anchor = EAnchor::new(opret.mpc_proof, opret.dbc_proof.into()); + Dichotomy::single((anchor, opret.bundle)) + } + AnchoredBundles::Double { tapret, opret } => { + let tapret_anchor = EAnchor::new(tapret.mpc_proof, tapret.dbc_proof.into()); + let opret_anchor = EAnchor::new(opret.mpc_proof, opret.dbc_proof.into()); + Dichotomy::double((tapret_anchor, tapret.bundle), (opret_anchor, opret.bundle)) + } + } + .into_iter() } } diff --git a/src/containers/consignment.rs b/src/containers/consignment.rs index cd91798f..e49df199 100644 --- a/src/containers/consignment.rs +++ b/src/containers/consignment.rs @@ -50,7 +50,7 @@ use super::{ use crate::interface::{Iface, IfaceImpl}; use crate::persistence::{MemContract, MemContractState}; use crate::resolvers::ConsignmentResolver; -use crate::{BundleExt, SecretSeal, LIB_NAME_RGB_STD}; +use crate::{SecretSeal, LIB_NAME_RGB_STD}; pub type Transfer = Consignment; pub type Contract = Consignment; @@ -296,8 +296,7 @@ impl Consignment { for mut witness_bundle in self.bundles { for (bundle_id, secret) in &self.terminals { if let Some(seal) = f(*secret)? { - if witness_bundle.bundle.bundle_id() == *bundle_id { - witness_bundle.bundle.reveal_seal(seal); + if witness_bundle.reveal_seal(*bundle_id, seal) { break; } } diff --git a/src/containers/indexed.rs b/src/containers/indexed.rs index a8e332a5..355d8c28 100644 --- a/src/containers/indexed.rs +++ b/src/containers/indexed.rs @@ -36,7 +36,7 @@ use crate::containers::anchors::ToWitnessId; pub struct IndexedConsignment<'c, const TRANSFER: bool> { consignment: &'c Consignment, scripts: Scripts, - anchor_idx: BTreeMap, + anchor_idx: BTreeMap, bundle_idx: BTreeMap, op_witness_idx: BTreeMap, op_bundle_idx: BTreeMap, @@ -61,14 +61,15 @@ impl<'c, const TRANSFER: bool> IndexedConsignment<'c, TRANSFER> { for witness_bundle in &consignment.bundles { witness_idx .insert(witness_bundle.pub_witness.to_witness_id(), &witness_bundle.pub_witness); - let bundle = &witness_bundle.bundle; - let bundle_id = bundle.bundle_id(); let witness_id = witness_bundle.pub_witness.to_witness_id(); - bundle_idx.insert(bundle_id, bundle); - anchor_idx.insert(bundle_id, (witness_id, &witness_bundle.anchor)); - for opid in witness_bundle.bundle.known_transitions.keys() { - op_witness_idx.insert(*opid, witness_id); - op_bundle_idx.insert(*opid, bundle_id); + for (anchor, bundle) in witness_bundle.anchored_bundles() { + let bundle_id = bundle.bundle_id(); + bundle_idx.insert(bundle_id, bundle); + anchor_idx.insert(bundle_id, (witness_id, anchor)); + for opid in bundle.known_transitions.keys() { + op_witness_idx.insert(*opid, witness_id); + op_bundle_idx.insert(*opid, bundle_id); + } } } for extension in &consignment.extensions { @@ -137,7 +138,7 @@ impl<'c, const TRANSFER: bool> ConsignmentApi for IndexedConsignment<'c, TRANSFE } fn anchor(&self, bundle_id: BundleId) -> Option<(XWitnessId, &EAnchor)> { - self.anchor_idx.get(&bundle_id).map(|(id, set)| (*id, *set)) + self.anchor_idx.get(&bundle_id).map(|(id, set)| (*id, set)) } fn op_witness_id(&self, opid: OpId) -> Option { diff --git a/src/containers/mod.rs b/src/containers/mod.rs index 277138e2..76ed6377 100644 --- a/src/containers/mod.rs +++ b/src/containers/mod.rs @@ -38,7 +38,10 @@ mod file; mod kit; mod suppl; -pub use anchors::{AnchorSet, PubWitness, SealWitness, ToWitnessId, WitnessBundle, XPubWitness}; +pub use anchors::{ + AnchorSet, AnchoredBundleMismatch, AnchoredBundles, ClientBundle, PubWitness, SealWitness, + ToWitnessId, UnrelatedTransition, WitnessBundle, XPubWitness, +}; pub use consignment::{ Consignment, ConsignmentExt, ConsignmentId, ConsignmentParseError, Contract, Transfer, ValidConsignment, ValidContract, ValidTransfer, diff --git a/src/containers/partials.rs b/src/containers/partials.rs index 28e9ca61..c46ccb5b 100644 --- a/src/containers/partials.rs +++ b/src/containers/partials.rs @@ -31,7 +31,10 @@ use rgb::{ ContractId, OpId, Operation, Transition, TransitionBundle, TxoSeal, XOutpoint, XOutputSeal, XWitnessId, }; -use strict_encoding::{StrictDecode, StrictDeserialize, StrictDumb, StrictEncode, StrictSerialize}; +use strict_encoding::{ + DecodeError, ReadStruct, StrictDecode, StrictDeserialize, StrictDumb, StrictEncode, + StrictProduct, StrictSerialize, StrictStruct, StrictType, TypedRead, TypedWrite, WriteStruct, +}; use crate::containers::{AnchorSet, XPubWitness}; use crate::LIB_NAME_RGB_STD; @@ -247,20 +250,54 @@ impl Batch { pub type BundleDichotomy = Dichotomy; pub type TransitionDichotomy = Dichotomy; +// TODO: Move to amplify #[derive(Clone, PartialEq, Eq, Hash, Debug)] -#[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] -#[strict_type(lib = LIB_NAME_RGB_STD)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), serde(crate = "serde_crate", rename_all = "camelCase") )] -pub struct Dichotomy { +pub struct Dichotomy { pub first: T, pub second: Option, } -impl FromIterator for Dichotomy { +impl StrictType for Dichotomy { + const STRICT_LIB_NAME: &'static str = LIB_NAME_RGB_STD; +} +impl StrictProduct for Dichotomy {} +impl StrictStruct for Dichotomy { + const ALL_FIELDS: &'static [&'static str] = &["first", "second"]; +} +impl StrictEncode for Dichotomy { + fn strict_encode(&self, writer: W) -> std::io::Result { + writer.write_struct::(|w| { + Ok(w.write_field(fname!("first"), &self.first)? + .write_field(fname!("second"), &self.second)? + .complete()) + }) + } +} +impl StrictDecode for Dichotomy { + fn strict_decode(reader: &mut impl TypedRead) -> Result { + reader.read_struct(|r| { + Ok(Self { + first: r.read_field(fname!("first"))?, + second: r.read_field(fname!("second"))?, + }) + }) + } +} +impl StrictDumb for Dichotomy { + fn strict_dumb() -> Self { + Self { + first: T::strict_dumb(), + second: None, + } + } +} + +impl FromIterator for Dichotomy { fn from_iter>(iter: I) -> Self { let mut iter = iter.into_iter(); let first = iter.next().expect("iterator must have at least one item"); @@ -270,7 +307,7 @@ impl FromIterator for Dichotomy< } } -impl IntoIterator for Dichotomy { +impl IntoIterator for Dichotomy { type Item = T; type IntoIter = vec::IntoIter; @@ -284,7 +321,21 @@ impl IntoIterator for Dichotomy } } -impl Dichotomy { +impl Dichotomy { + pub fn single(first: T) -> Self { + Self { + first, + second: None, + } + } + + pub fn double(first: T, second: T) -> Self { + Self { + first, + second: Some(second), + } + } + pub fn with(first: T, second: Option) -> Self { Self { first, second } } pub fn iter(&self) -> vec::IntoIter<&T> { diff --git a/src/contract/bundle.rs b/src/contract/bundle.rs deleted file mode 100644 index ef9788ca..00000000 --- a/src/contract/bundle.rs +++ /dev/null @@ -1,68 +0,0 @@ -// RGB standard library for working with smart contracts on Bitcoin & Lightning -// -// SPDX-License-Identifier: Apache-2.0 -// -// Written in 2019-2024 by -// Dr Maxim Orlovsky -// -// Copyright (C) 2019-2024 LNP/BP Standards Association. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -use rgb::{GraphSeal, OpId, Operation, Transition, TransitionBundle, XChain}; - -use crate::contract::TypedAssignsExt; - -#[derive(Clone, Eq, PartialEq, Debug, Display, Error)] -#[display(doc_comments)] -pub enum RevealError { - /// the provided state transition is not a part of the bundle - UnrelatedTransition(OpId, Transition), -} - -pub trait BundleExt { - /// Ensures that the seal is revealed inside the bundle. - fn reveal_seal(&mut self, seal: XChain); - - /// Ensures that the transition is revealed inside the bundle. - /// - /// # Returns - /// - /// `true` if the transition was previously concealed; `false` if it was - /// already revealed; error if the transition is unrelated to the bundle. - fn reveal_transition(&mut self, transition: Transition) -> Result; -} - -impl BundleExt for TransitionBundle { - fn reveal_seal(&mut self, seal: XChain) { - for (_, transition) in self.known_transitions.keyed_values_mut() { - for (_, assign) in transition.assignments.keyed_values_mut() { - assign.reveal_seal(seal) - } - } - } - - fn reveal_transition(&mut self, transition: Transition) -> Result { - let opid = transition.id(); - if self.input_map.values().all(|id| id != &opid) { - return Err(RevealError::UnrelatedTransition(opid, transition)); - } - if self.known_transitions.contains_key(&opid) { - return Ok(false); - } - self.known_transitions - .insert(opid, transition) - .expect("same size as input map"); - Ok(true) - } -} diff --git a/src/contract/mod.rs b/src/contract/mod.rs index b7905e89..91148d9b 100644 --- a/src/contract/mod.rs +++ b/src/contract/mod.rs @@ -20,11 +20,9 @@ // limitations under the License. mod assignments; -mod bundle; mod merge_reveal; pub use assignments::{KnownState, OutputAssignment, TypedAssignsExt}; -pub use bundle::{BundleExt, RevealError}; pub use merge_reveal::{MergeReveal, MergeRevealError}; use rgb::vm::OrdOpRef; use rgb::{ExtensionType, OpId, TransitionType, XWitnessId}; diff --git a/src/lib.rs b/src/lib.rs index 5adfce94..cd78b5ce 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -46,10 +46,7 @@ mod contract; pub mod info; pub use bp::{Outpoint, Txid}; -pub use contract::{ - BundleExt, KnownState, MergeReveal, MergeRevealError, OutputAssignment, RevealError, - TypedAssignsExt, -}; +pub use contract::{KnownState, MergeReveal, MergeRevealError, OutputAssignment, TypedAssignsExt}; pub use invoice::{Allocation, Amount, CoinAmount, OwnedFraction, Precision, TokenIndex}; pub use rgb::prelude::*; pub use rgb::rgbasm; diff --git a/src/persistence/index.rs b/src/persistence/index.rs index a047d7d0..b6b71207 100644 --- a/src/persistence/index.rs +++ b/src/persistence/index.rs @@ -171,12 +171,13 @@ impl Index

{ } for WitnessBundle { pub_witness, - bundle, - anchor: _, + anchored_bundles, } in consignment.bundled_witnesses() { let witness_id = pub_witness.to_witness_id(); - self.index_bundle(contract_id, bundle, witness_id)?; + for bundle in anchored_bundles.bundles() { + self.index_bundle(contract_id, bundle, witness_id)?; + } } Ok(()) @@ -334,7 +335,7 @@ impl Index

{ pub(super) fn bundle_info( &self, bundle_id: BundleId, - ) -> Result<(impl Iterator + '_, ContractId), IndexError

> { + ) -> Result<(XWitnessId, ContractId), IndexError

> { Ok(self.provider.bundle_info(bundle_id)?) } } @@ -391,7 +392,7 @@ pub trait IndexReadProvider { fn bundle_info( &self, bundle_id: BundleId, - ) -> Result<(impl Iterator, ContractId), IndexReadError>; + ) -> Result<(XWitnessId, ContractId), IndexReadError>; } pub trait IndexWriteProvider: StoreTransaction { diff --git a/src/persistence/memory.rs b/src/persistence/memory.rs index 1a8490ca..013feddd 100644 --- a/src/persistence/memory.rs +++ b/src/persistence/memory.rs @@ -580,7 +580,7 @@ impl StateReadProvider for MemState { let ord = self .witnesses .get(&witness_id) - .ok_or(StateInconsistency::AbsentValidWitness)?; + .ok_or(StateInconsistency::AbsentWitness)?; Ok(ord.is_valid()) } } @@ -1205,7 +1205,7 @@ pub struct MemIndex { op_bundle_index: MediumOrdMap, bundle_contract_index: MediumOrdMap, - bundle_witness_index: MediumOrdMap>, + bundle_witness_index: MediumOrdMap, contract_index: TinyOrdMap, terminal_index: MediumOrdMap, TinyOrdSet>, } @@ -1339,8 +1339,8 @@ impl IndexReadProvider for MemIndex { fn bundle_info( &self, bundle_id: BundleId, - ) -> Result<(impl Iterator, ContractId), IndexReadError> { - let witness_ids = self + ) -> Result<(XWitnessId, ContractId), IndexReadError> { + let witness_id = self .bundle_witness_index .get(&bundle_id) .ok_or(IndexInconsistency::BundleWitnessUnknown(bundle_id))?; @@ -1348,7 +1348,7 @@ impl IndexReadProvider for MemIndex { .bundle_contract_index .get(&bundle_id) .ok_or(IndexInconsistency::BundleContractUnknown(bundle_id))?; - Ok((witness_ids.iter().copied(), *contract_id)) + Ok((*witness_id, *contract_id)) } } @@ -1382,12 +1382,7 @@ impl IndexWriteProvider for MemIndex { } .into()); } - let mut set = self - .bundle_witness_index - .remove(&bundle_id)? - .unwrap_or_default(); - set.push(witness_id)?; - self.bundle_witness_index.insert(bundle_id, set)?; + self.bundle_witness_index.insert(bundle_id, witness_id)?; let present2 = self .bundle_contract_index .insert(bundle_id, contract_id)? diff --git a/src/persistence/stash.rs b/src/persistence/stash.rs index 0924fdd0..f9434298 100644 --- a/src/persistence/stash.rs +++ b/src/persistence/stash.rs @@ -513,8 +513,8 @@ impl Stash

{ .map_err(StashError::WriteProvider)?; } - for bw in consignment.bundles { - self.consume_bundled_witness(contract_id, bw)?; + for witness_bundles in consignment.bundles { + self.consume_witness_bundle(contract_id, witness_bundles)?; } for (id, attach) in consignment.attachments { @@ -545,28 +545,95 @@ impl Stash

{ }) } - fn consume_bundled_witness( + fn consume_witness_bundle( &mut self, contract_id: ContractId, - bundled_witness: WitnessBundle, + witness_bundle: WitnessBundle, ) -> Result<(), StashError

> { let WitnessBundle { pub_witness, - bundle, - anchor, - } = bundled_witness; + anchored_bundles, + } = witness_bundle; - // TODO: Save pub witness transaction and SPVs + // TODO: Save pub witness transaction SPVs - let bundle_id = bundle.bundle_id(); - self.consume_bundle(bundle)?; + let mut anchors = Vec::with_capacity(2); + for (anchor, bundle) in anchored_bundles.into_iter() { + let bundle_id = bundle.bundle_id(); + self.consume_bundle(bundle)?; - let proto = mpc::ProtocolId::from_byte_array(contract_id.to_byte_array()); - let msg = mpc::Message::from_byte_array(bundle_id.to_byte_array()); - let merkle_block = MerkleBlock::with(&anchor.mpc_proof, proto, msg)?; - let anchors = match anchor.dbc_proof { - DbcProof::Tapret(tapret) => AnchorSet::Tapret(Anchor::new(merkle_block, tapret)), - DbcProof::Opret(opret) => AnchorSet::Opret(Anchor::new(merkle_block, opret)), + let proto = mpc::ProtocolId::from_byte_array(contract_id.to_byte_array()); + let msg = mpc::Message::from_byte_array(bundle_id.to_byte_array()); + let merkle_block = MerkleBlock::with(&anchor.mpc_proof, proto, msg)?; + anchors.push(Anchor::new(merkle_block, anchor.dbc_proof)); + } + + let anchors = match (anchors.pop().unwrap(), anchors.pop()) { + ( + Anchor { + dbc_proof: DbcProof::Opret(opret), + mpc_proof, + .. + }, + None, + ) => AnchorSet::Opret(Anchor::new(mpc_proof, opret)), + ( + Anchor { + dbc_proof: DbcProof::Tapret(tapret), + mpc_proof, + .. + }, + None, + ) => AnchorSet::Tapret(Anchor::new(mpc_proof, tapret)), + ( + Anchor { + dbc_proof: DbcProof::Tapret(tapret), + mpc_proof: mpc_proof_tapret, + .. + }, + Some(Anchor { + dbc_proof: DbcProof::Opret(opret), + mpc_proof: mpc_proof_opret, + .. + }), + ) + | ( + Anchor { + dbc_proof: DbcProof::Opret(opret), + mpc_proof: mpc_proof_tapret, + .. + }, + Some(Anchor { + dbc_proof: DbcProof::Tapret(tapret), + mpc_proof: mpc_proof_opret, + .. + }), + ) => AnchorSet::Double { + tapret: Anchor::new(mpc_proof_tapret, tapret), + opret: Anchor::new(mpc_proof_opret, opret), + }, + ( + Anchor { + dbc_proof: DbcProof::Opret(_), + .. + }, + Some(Anchor { + dbc_proof: DbcProof::Opret(_), + .. + }), + ) + | ( + Anchor { + dbc_proof: DbcProof::Tapret(_), + .. + }, + Some(Anchor { + dbc_proof: DbcProof::Tapret(_), + .. + }), + ) => unreachable!( + "these combinations must be prevented at the `AnchoredBundles` structure level" + ), }; let witness = SealWitness { public: pub_witness.clone(), diff --git a/src/persistence/state.rs b/src/persistence/state.rs index 621ec2eb..6431037a 100644 --- a/src/persistence/state.rs +++ b/src/persistence/state.rs @@ -19,7 +19,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::borrow::Borrow; use std::collections::BTreeMap; use std::error::Error; use std::fmt::Debug; @@ -66,6 +65,8 @@ pub enum StateError { pub enum StateInconsistency { /// contract state {0} is not known. UnknownContract(ContractId), + /// a witness is absent in the list of witnesses for a state transition bundle. + AbsentWitness, /// valid (non-archived) witness is absent in the list of witnesses for a /// state transition bundle. AbsentValidWitness, @@ -134,21 +135,10 @@ impl State

{ .map_err(StateError::ReadProvider) } - pub fn select_valid_witness( - &self, - witness_ids: impl IntoIterator>, - ) -> Result> { - for witness_id in witness_ids { - let witness_id = *witness_id.borrow(); - if self - .provider - .is_valid_witness(witness_id) - .map_err(StateError::ReadProvider)? - { - return Ok(witness_id); - } - } - Err(StateError::Inconsistency(StateInconsistency::AbsentValidWitness)) + pub fn is_valid_witness(&self, witness_id: XWitnessId) -> Result> { + self.provider + .is_valid_witness(witness_id) + .map_err(StateError::ReadProvider) } pub fn update_from_bundle( @@ -190,7 +180,7 @@ impl State

{ .collect::>(); let mut ordered_extensions = BTreeMap::new(); for witness_bundle in consignment.bundled_witnesses() { - for transition in witness_bundle.bundle.known_transitions.values() { + for transition in witness_bundle.known_transitions() { let witness_id = witness_bundle.pub_witness.to_witness_id(); let witness_ord = resolver .resolve_pub_witness_ord(witness_id) diff --git a/src/persistence/stock.rs b/src/persistence/stock.rs index 3f2e1849..5add193e 100644 --- a/src/persistence/stock.rs +++ b/src/persistence/stock.rs @@ -27,7 +27,7 @@ use std::fmt::Debug; use amplify::confinement::{Confined, U24}; use amplify::Wrapper; -use bp::dbc::{Anchor, Method}; +use bp::dbc::Method; use bp::seals::txout::CloseMethod; use bp::Vout; use chrono::Utc; @@ -49,17 +49,18 @@ use super::{ StateWriteProvider, StoreTransaction, }; use crate::containers::{ - AnchorSet, Batch, BuilderSeal, Consignment, ContainerVer, ContentId, ContentRef, Contract, - Fascia, Kit, SealWitness, SupplItem, SupplSub, Transfer, TransitionDichotomy, TransitionInfo, - TransitionInfoError, ValidConsignment, ValidContract, ValidKit, ValidTransfer, VelocityHint, - WitnessBundle, SUPPL_ANNOT_VELOCITY, + AnchorSet, AnchoredBundleMismatch, Batch, BuilderSeal, ClientBundle, Consignment, ContainerVer, + ContentId, ContentRef, Contract, Fascia, Kit, SealWitness, SupplItem, SupplSub, Transfer, + TransitionDichotomy, TransitionInfo, TransitionInfoError, UnrelatedTransition, + ValidConsignment, ValidContract, ValidKit, ValidTransfer, VelocityHint, WitnessBundle, + SUPPL_ANNOT_VELOCITY, }; use crate::info::{ContractInfo, IfaceInfo, SchemaInfo}; use crate::interface::{ BuilderError, ContractBuilder, ContractIface, Iface, IfaceClass, IfaceId, IfaceRef, IfaceWrapper, TransitionBuilder, }; -use crate::{BundleExt, MergeRevealError, RevealError}; +use crate::MergeRevealError; pub type ContractAssignments = HashMap>; @@ -169,7 +170,11 @@ pub enum ConsignError { #[from] #[display(inner)] - Reveal(RevealError), + Transition(UnrelatedTransition), + + #[from] + #[display(inner)] + AnchoredBundle(AnchoredBundleMismatch), /// the spent state from transition {1} inside bundle {0} is concealed. Concealed(BundleId, OpId), @@ -187,10 +192,16 @@ impl From Self { Self::InvalidInput(err.into()) } } -impl From +impl From + for StockError +{ + fn from(err: UnrelatedTransition) -> Self { Self::InvalidInput(err.into()) } +} + +impl From for StockError { - fn from(err: RevealError) -> Self { Self::InvalidInput(err.into()) } + fn from(err: AnchoredBundleMismatch) -> Self { Self::InvalidInput(err.into()) } } #[derive(Clone, PartialEq, Eq, Debug, Display, Error, From)] @@ -745,7 +756,7 @@ impl Stock { opouts.extend(self.index.opouts_by_terminals(secret_seal.into_iter())?); // 1.3. Collect all state transitions assigning state to the provided outpoints - let mut witness_bundles = BTreeMap::::new(); + let mut anchored_bundles = BTreeMap::::new(); let mut transitions = BTreeMap::::new(); let mut terminals = BTreeMap::>::new(); for opout in opouts { @@ -768,9 +779,8 @@ impl Stock { } } - if let Entry::Vacant(entry) = witness_bundles.entry(bundle_id) { - let bw = self.witness_bundle(bundle_id)?; - entry.insert(bw); + if let Entry::Vacant(entry) = anchored_bundles.entry(bundle_id) { + entry.insert(self.client_bundle(bundle_id)?); } } @@ -787,10 +797,9 @@ impl Stock { ids.extend(transition.inputs().iter().map(|input| input.prev_out.op)); transitions.insert(id, transition.clone()); let bundle_id = self.index.bundle_id_for_op(transition.id())?; - witness_bundles + anchored_bundles .entry(bundle_id) - .or_insert(self.witness_bundle(bundle_id)?.clone()) - .bundle + .or_insert(self.client_bundle(bundle_id)?.clone()) .reveal_transition(transition.clone())?; } @@ -836,16 +845,15 @@ impl Stock { let ifaces = Confined::from_checked(ifaces); let mut bundles = BTreeMap::::new(); - for witness_bundle in witness_bundles.into_values() { - let witness_id = witness_bundle.witness_id(); - match bundles.get_mut(&witness_id) { - Some(prev) => { - *prev = prev.clone().merge_reveal(witness_bundle)?; - } - None => { - bundles.insert(witness_id, witness_bundle); - } - } + for anchored_bundle in anchored_bundles.into_values() { + let witness_id = self.index.bundle_info(anchored_bundle.bundle_id())?.0; + let pub_witness = self.stash.witness(witness_id)?.public.clone(); + let wb = match bundles.remove(&witness_id) { + Some(bundle) => bundle.into_double(anchored_bundle)?, + None => WitnessBundle::with(pub_witness, anchored_bundle), + }; + let res = bundles.insert(witness_id, wb); + debug_assert!(res.is_none()); } let bundles = Confined::try_from_iter(bundles.into_values()) .map_err(|_| ConsignError::TooManyBundles)?; @@ -1340,11 +1348,13 @@ impl Stock { .ok_or(ConsignError::Concealed(bundle_id, opid).into()) } - fn witness_bundle(&self, bundle_id: BundleId) -> Result> { - let (witness_ids, contract_id) = self.index.bundle_info(bundle_id)?; + fn client_bundle(&self, bundle_id: BundleId) -> Result> { + let (witness_id, contract_id) = self.index.bundle_info(bundle_id)?; let bundle = self.stash.bundle(bundle_id)?.clone(); - let witness_id = self.state.select_valid_witness(witness_ids)?; + if !self.state.is_valid_witness(witness_id)? { + return Err(StateInconsistency::AbsentValidWitness.into()); + } let witness = self.stash.witness(witness_id)?; let (merkle_block, dbc) = match (bundle.close_method, &witness.anchors) { ( @@ -1370,15 +1380,10 @@ impl Stock { ) .into()); }; - let anchor = Anchor::new(mpc_proof, dbc); // TODO: Conceal all transitions except the one we need - Ok(WitnessBundle { - pub_witness: witness.public.clone(), - bundle, - anchor, - }) + Ok(ClientBundle::new(mpc_proof, dbc, bundle)) } pub fn store_secret_seal( diff --git a/src/stl/stl.rs b/src/stl/stl.rs index 2aeb050b..ea509e37 100644 --- a/src/stl/stl.rs +++ b/src/stl/stl.rs @@ -41,7 +41,7 @@ use crate::LIB_NAME_RGB_STD; /// Strict types id for the library providing standard data types which may be /// used in RGB smart contracts. pub const LIB_ID_RGB_STORAGE: &str = - "stl:YBgLtVmT-FuzNBPe-1fxIqay-JW4Evd5-Za7fm9w-GLF6JAg#transit-xray-giraffe"; + "stl:7gJzyOSk-9kGbkdS-oKUNJvS-tk6p!Hw-!uhig0T-fkZgi4g#serial-cake-educate"; /// Strict types id for the library providing standard data types which may be /// used in RGB smart contracts. @@ -50,7 +50,7 @@ pub const LIB_ID_RGB_CONTRACT: &str = /// Strict types id for the library representing of RGB StdLib data types. pub const LIB_ID_RGB_STD: &str = - "stl:H1HLPfyC-5YLlAk!-KWhcUo1-0vtex!9-ODxSmIA-zj1J$qc#western-craft-bogart"; + "stl:xjwnXqkB-dTDlmmW-QIpkDHJ-$!ERsTT-Tdsz4MM-7JIQTT8#jessica-tropic-song"; fn _rgb_std_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB_STD), tiny_bset! { diff --git a/stl/RGBStd@0.11.0.sta b/stl/RGBStd@0.11.0.sta index bec475b7..cb9acb00 100644 --- a/stl/RGBStd@0.11.0.sta +++ b/stl/RGBStd@0.11.0.sta @@ -1,306 +1,311 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:H1HLPfyC-5YLlAk!-KWhcUo1-0vtex!9-ODxSmIA-zj1J$qc#western-craft-bogart +Id: stl:xjwnXqkB-dTDlmmW-QIpkDHJ-$!ERsTT-Tdsz4MM-7JIQTT8#jessica-tropic-song Name: RGBStd Dependencies: StrictTypes#century-comrade-chess, AluVM#congo-archive-folio, RGBCommit#tuna-safari-design, - RGBLogic#explain-marvin-bless, CommitVerify#miller-pancake-elastic, BPCore#totem-holiday-helena, Std#ralph-blue-lucky, Bitcoin#signal-color-cipher -Check-SHA256: 04b8598c3e334bc5ad1ed6d7f4d5b7aaec4e86a6205329e4b40d3a089dbc918f +Check-SHA256: cf7ac9aaf6dc25471d0da11c0a361933a242801a12c9561f0229a1a43abb0e0b -22w{tQ*>kqMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r3sZD*X=8L$d2nTOVsJHoA?4$swuZp1 +22w{tQ*>kpMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r3sZD*X=8L$d2nTOVsJHoA?4$swuZp1 Wc+9AOf`(TIbyKWjTy4WkGaM+1wm|eR!wBY)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdTOM?yny -ZEb0EZYmQ7jMFx!r5s@rJ-O*H1;I5Y*Jq{lbOS_Kbz-c)2vSEvOmAmtV|oJ}-)Viz@~C%8KNS}Z0aQ3s -^SOqbBwN-D{wl@OCJaMwZEb0ER%LQ&W_hMrvQRIBF~gy)hQg^4yxce6i-HaxmCGKABZpBR?$8E8P(yEW -Wy&lbZ-bfLFbqC#o>4E?M+l67UG^w8*<_XZ#%uyqCj(P-Wc6$lVk7oBr%DNv+($;q`HHK!gIHa)*%m(- -e#9sm3I{@IbYpL6ZU_ZIY;{&m1^^NSr?vtRe2PRb^)}W8ZdqCQlr&gKJ5X<}{fp(f$H -b>aU=OZ$bvG|>z)+>9PT;Au-7)~D;-++hbyX<}1pbY+s|KgxOTbXgHlB~91)qbQqD?1jgn -N8blYb74+lZDpr0RRS&fT*&Z=qeY@Wmfle*z!SF)@h8|JkU^FEQwjx4X<|uavkfUR&BN*@p#4(ibP}+p -taQ)Oq;;uu>eaRuf?``QO_k(5tm>UaGoca9LuK7Ij+X8IutaRAF#(Wpqw&WMxoca&&HGau2p2m_Hir -tB!lh<{Yi-S-!KI0_27BH<@sVme~^s3=33YaB^jIP;zf?W)s9yQf4Q+L?w(nXY|a%e*XOAC%4aD5B-6U -FMfO2d=FG%aB^jIP+@dvP;zf?W-hl7CAn^87TS9h9ibhaZ&^Bcn*B*;w|~I;-PD|t>jq6_bZBp6I6q=8 -aZ}RBA(1@GcO9QSWZ!o3C{DXc_Cg)w39@m$R6qOEzWQ+NTC@=;{OM>iY* -&c?b?aZznm(1lyi>kUF|X>MdwWnpYocxhy@ZeT05|jA;vvYupWm6Q)O{ZZweWZ*HiKem1Z9kJM|+< -C6E3~$lVDiq#NV}y^f+rssvPcNp2zIK10Q-T=FR=Q=>S+XYD&bY*ifyRPVjiFd`Y2QhLn&64&owka*miGSR> --o?7a>3`V^RAF#VZ)9aiVRL9T+8q@+Aa1+e+@!-jhcW8%o2S}z-#y5JARJB>wYeM!OmAarRB3HxICTWE -OMDJSZAYFLM|~u8B!Bn=Wb8dls`ok|_d#@P2~%ljQ)6;zaCBd+*=^-NPQ?`2v5jYd+6t@dEhY>7H!Y*U -dZb-BpG^u(WnpGhV{&P5bdWn_aCwA}8zxgKpy7|rEn>a@Jg9&ldILR+=b-aAzAVr?5I2ooM2Ulry -Ze??Gqk=;7%h%D+p%U7S;b1RT)c9`>#Kd;Rz-U=aO9W+B1XOrwWTLLzo&{8RR%LRjg@kugo@o29zwXDHA;ech!BqJAy+4@X(~&*rw>NkSNp5sya&BR4P;0g`38@&r -wvr8Q$XKK#ha*N>X+Ls92fzOv*E(~7PRR#MWnpGkWpcj!9{gsd8U18ZYC02#KAOx^Y=h@ -bX*KmV{&P5bWn9-Yh`)Fa%+!|DA9Vsm&hHC4WXN2M4aZ(WL^Hp>3BS~hw-BaLV0v$Q*?60dm);?_c?BI -Mu4qFRxf<)p=@qHCf(fs{C;c$=G;UARCwrWK+Rkw`Mu(V|7oQWGN(Z+AyvH&RuaL#N4?X)a%pCH1^_soLxv|6 -1vo|i^jdP;% -w2}rc(F;vwa%*g5P;zf?W|Q||cyL4!ji%3ykIJtwI*nu%&Q~z;Vl^%5w -S6(#;{6ajG64wDPk{-(rQe|^xa&~28LV0v$b2R>f7D?ZDzCQez5c=X9w<(f6`q$DH-G17V_XV{1(H;&` -Wpib6c4cHjd30rSI0;fmLPKwDZE18w00U?O%&6V>N}#h955#ht!=;R2Lj=uo+MI7C_W0!u+z&-~bY*UH -X>V>*V`yb|`fdzI -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 +Rs>XdX=JE;#(89COl4taR%LR& +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 +Z0H=mhJ>?uV^xB4~9n`Dx!RtcK)nwJGn +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 +&Z4!V_T!KN +I`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pa{vhfMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{ +AMw{vgzX#P!9p!}0yp?_0000000000{{R300000024!+`Z*p@02?9mxqhH(hNn`*70ssVVZ*FA(00035b8l^B00jX8Me3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C +`}q*rYXqYdo~D%m7H6OD0<^0n_2##VWXRdjy=DB@qgYOj2y$g{b!l>CWCF@89&dx0-7pM3Z=O*v*GCA9 +fL-<|HrZsA`NnJlR3~AEBGG%U@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_Du+Fb!>ELaBO7)$}AplgPGkh +3_fq3Q7_j=2#kPT_9!;lWR>~GYywm#VTK~nd#>Z4!V_T!KNI`QJ|h6;Zj +^jB$MPK+?7Lu3>C`4HJt76^nC$%1sKzB<;EQA|)S-x88IWKN#S$#@T&w`gPtX>Mp`a%psP00;p)%D{mG +2;nQMTOnwNgyXhzrB~SH04;UKo5i(1Vxw^Y00000000300000000009bZKp6b97;CZ~y>E2yJC_VPs)+ +VE_sOMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!} +0yp?_0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*=q!&6rQG)02XJT?*g=|B=zREie$*y(7k2+ +*P~cYjQ{`u000000RI300000001IbqZ(?C=Q*>c;WdI5SMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C +`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0m=yGke?j1l!xqXd>q7+-P0pRHy9#PwIC +`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0ZXaKh^f@$D{A?t{IfX>#}PNp!L%7{0GY9x +pq!KXGXMYp000000RI3000000010+sY-Mg^X=QT&3IavyqhH(hb7^w{b?qhoJW!8=sKG~^&Ni^C7tcO}co=3CQC(GPVoWSC3v_Z} +ZgXjLX>V?G015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+p< +?Hl01LM?X!H~4Y^Hx3&bJ$HXE2K+s|vHZ6#&ske5?JSDZAfr}PGrQJ;0000000000{{R30000003T1e7 +Wo~n6Z*Fq{3IavyqhH(hD`aAk5~bZKvH00aU61a5C`WdHyG0R(ezZDjxj0RlzpqhH(hC`}q*r35LOoBKkGaY9#cS7Qj{WgyAGcS>>g~&^g7p#+${pKVqYC33O>~Wpi|4ZEyepNC<6ZbYWy+bYTDq0lk5UVp0y6#Opn49V(cQc;WdI2QadI6-(bd|-i#!&GYaF>qoh8ar +da{vheR)?jU+FZ2DLr`QR#xHIKjC^A48Li8o +%k$8HEod=_0000000000{{R30000003v_Z}ZgXjLX>V?G00{v&KD$)QXhhr5^*YH=BF-=c +yOsxg-v9sr000000RI300000000w1pa&K~T00{xZXXT7NJOW`Spw3o_*cmz+=1%_1gm*5-D79nn{HtC7 +00000000300000000009WMy_`Y;SO7asp(;)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+Kjg7fQB3> +bs~EXcCXx(drQcb3B`Fx$)^%va$Ar)C7cFHZE$Q!WCZ~L2LJ#-AOHhPX>#x3$o4Af`kVHyQ&~TYC +SRqgV00000000300000000008b7N>_ZDDj_00{zQ#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OtU +dtiph_du_cl6_7Jvu!-2h2yT^5yv>ite$I%(jAWg00000000300000000006X=!b6Y;yn!0fbj(2M`|< +m3T|4oDcSEr%ah$$XqR+hQ$77qvA$o%>V!Z000000RI300000001I<Z4!V_T!KNI`QJ|h6;Zj +^jB$MPK+?7Lu3>C`4HLtfv$so3kRF1PV2}fOp_vjQ6FdFHId|lr&gK9B00000 0096000000000VeX=iR>bairNa{vkf;?xyT5z&Ua+M@}mOiDpYxh>^^GknUxTJ!XL#OUcE0frb5ENEw7 -&f?o%+)B!ZpG}K!%4G?I4vp$|ttu*CMF0Q*000000RI300000001rcNZgXj8Zf#|5baZlcWd;ogc4cyN -X>V=;l-_zLn%tmAe68Jly{Qj?Kss0ny)C8xzFm#1PkyMk2y}8`ZgXa3astXM9&dx0-7pM3Z=O*v*GCA9 -fL-<|HrZsA`NnJlR3~AEBGG%U@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_DuKtpQ8M_qJyiO1VIUJ=H=)@ii_00000 -00000|Nj60000002WMq&WpinB0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-VjO?=JcE6dyPJT+t -k%Iz|R3_dTDo~ZL;TN>NvV?G00{zQ#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E -(%Otur}OFoDdEE8rbT!M3y4gMJ*2_uUvGVLlsE)B`jpK80000000030|Ns9000007Vs&n0Y-Mu*2?0Hl -)<>d4I}(*_lNXA@iYQk^RnB@|WjyHfhANamkKF(O0000000960|Nj60000JaV`ybV!Z000000RI300000001I<Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HLtfv$so3kRF1 -PV2}fOp_vjQ6FdFHId|lr&gK9B000000000400000000YNbaY{3Xl-R~baMa- -0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-VjD&FwlPpg3!?y@aX^XIja4CK{WF&t@k=WXUZP9(Y -H~bairNa{vkf;?xyT5z&Ua+M@}m -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 -ie$*y(7k2+*P~cYjRuJC38 --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 -aaxrgbrDxyH3xis%LHy=ZDj&Q>Z4!V +&f?o%+)B!ZpG}K!%4G?I4vp$|ttu*CMF0Q*000000RI300000000>QQWNBt;WpV=p2w`G#baG*1bN~o% +c4cyMX=G&q1!ie(VQl{xPGN0jWJYOaY-B-mb7^O8ZDnqBRC#b^1_J_VWCCQw)d@|xKsr716mTQmaB}RO +Z@Dgs2ia_2=g^?i+Kh+(;$>KfZ0H=mhJ>?uVC`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_2y$g}WpZ|9WCD5v +9p7nv%krpqNFdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmWOW`w +sTH9-LlJ`2|Ay5Z(?oEikl{+~pis;@Q*TJ#1a4t%WdcR&qhH(he1kloHngE|MP08BSqsWn@NaWo%?eY;R&=Y*Tb$ +bY)a|aAgJq0%>FdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilm)$WoGNre1kloHngE|MP05>8=lWn@NaWo%?kWprUwd2nS00|IGe0%XM12~D{`Iz96g +a3kGta_pUNxh{zZ*=%3u(4f-VjCJHq_}|Wp0vpvv$c&#PW69R$ltr%da5t5w^x+8!q6BVXZDj&Q>Z4!V _T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pC -`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_2y$g}WpZ|9WCD5v9p7nv%krpqNV>+d2nS00|IGe0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-Vj5JaYt`n9TUcD*&5hFi^PVx{q -1b@^7zTcrn*%qZTXasIyZDj&Q>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ -{M3XW@z+pZ4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+ppG1a4t%WdcR&qhH(he1kloHngE|MP03Qu=#Wn@WaVPjZ4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HJ_1fvw5rj-B|XP@r^w5ufb=C_Ju$l1`nW&GEpSWb-! -P<3KgX>@L7b8`d&00eY+X=DHe0Rr`G6JjIwIj2eqliWu}$@z+_xPw?-wb>Rw7=FYk8VaL=Li5Yl(a@n1 -+Ku60FILp}Zw|!7cE!MGSxid=WmW+Kba(&-0Rr`G6JjIwIj2eqliWu}$@z+_xPw?-wb>Rw7=FYk8VbdG -A)3GUIc{=BfUQMVFMRBwY;Hd$-Q55DeryBg+(ZXcX=g%gZ(;=j00;m8Kmh;%00000000mG0000000&cb -aByr%WCZ~L2LJ#-AOHzdb#QQONpxjx1O)&GWMyVyb!>D100037ba`-PPHzAO0RR935eRg7aAi(mZDjxj -0RlzpqhH(hOi(W05|TJ%PM*ricn_Pm -Xk-!zW@%+?WKLmiWdH>M0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*&DQ20rFt3ZOHs70;T-a -gdg$OP=xIp;K4#IcLF!~auW-7VRC6NdhVC3z)=0wst0Y0}#&o=rIt`?a&Fa))1(#TPD!jC~PR_M88ajEx^RR910000000RI3000000 -00>icaByr>bz%bw25EG2Wo%{u1Z`z>VF3nbY;R&=Yyt&ucWz~50|$0tY-Mg^c?1e!b8~5DZf#|5bOi@z -Wo~72X>$e&baG*Cb7^#GZ*B((Wq5RDZgXjGZU_lwcw=R7bZKvH2?|qnaBys8ZDnqB1_TLXZ*FvDZgfdx -0S1_@x7s+uExGllhUte$e$Op^sMk_Bzn7+|3$axzr3rLtZDn(GVQp{#07wU8a%Ew3Z*l@;#MKE+xj;HS -^AvC+-Eea3oo~4=i3iziU+2)E(%Ou+=zxYCD0L!x4tB5Hm3vFbl?lapNXe%XU~*fKJ0+Y8VQy}3bYXO9 -Z*Fq{3ISO55nb$VTQ?X>xA?XXJF{2H^dT~zWT)b=0OBT1J2L^)|BtqCIH`QK6F1|v)Z${_U85pQj^zm^ -DU~vi8uS+c0000000030000000000FRB~Z%b7^#GZ*ECuVPj4E?M+l67UG^w8*<_XZ#%uyqCt-#n -(R;4&W&+>mb;*F>vukd;=m`ygb@x#_>`RmOO$cpebYWy+bYTDq0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_ -Fs4If6Z`oP*&DQ20rFt3ZOHs70;T-agdg$OP=xIp;K4#IcLF!~asU7T000000RI300000000(DmZ(?C= -a{vkgMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!} -0yp?_0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-Vj5fhEq57bK6Q|uUfIMEX^1}Vv6tLB!)|10- -o)0prc>n+a000000RI300000000wDpaCLNZ015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~ -v{(W1V6JV*{3!yZ{M3XW@z+pGEG0000000000{{R30000003t@9}X=iS2Wo~qH015&{ ->Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pGEG -0000000000{{R300000033g#@Wo~0>Wpe-t0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*&DQ2 -0rFt3ZOHs70;T-agdg$OP=xIp;K4#IcLF!~asU7T000000RI300000000w1pa&K~T00{y`>Z4!V_T!KN -I`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI&hQW&>`ZdvNB=ndTz*X~v;Uq>`<)y^XImOPdju4Lk0000000030 -000000000HWMyVyb!>D&b8~5DZf#|5bN~bb00eGtZe;)f009JZZ*64&1pxv@>Z4!V_T!KNI`QJ|h6;Zj -^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+p~GYywm#VTK~nd#>Ze%hHN@6KPlLd+s#TneA -z-EYx +0WOjr%NR~!ZDnLeX=Q9=RB~Z%b7^#GZ*Ek1aAgJq0%>FdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWl +pwilmG*S<)6P6lYy(#<=BR_>s@(?%#f7ArN-=Rj?7Ns(11a4t%WdcR&qhH(he1kloHngE|MP06;5GoWn@NaWo%?t +VQgh?V|i40aAgJq0%>FdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmM(yUq2ps*m=2xUDT;RqC +gn#@WzFu~@adfH5^@&-|1a4t%WdcR&qhH(he1kloHngE|MP04o+chWn@-ia%o|1bagle0|IGe00035ZeeX@0!8Yh +U)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*$IZhiz50p(P||0m=?fQ^Mv6fMp@;h#Lzj#&aRFSj|g&Q +b7gXNWn=<+10COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUG5>JtwI*nu%&Q~z;Vl^%5wS6(#;{6ajG +64wDPk{-(nPj_x*WJzXWV`T&e00Uuec>n+a0S0nuXJ~YD0000224QV)b#8P30009AVQzUuVRT^t000CD +VQzUrbaY{3XaE2J1q5VabYTDm0RlzpqhH(hioJ +pYH;+t0eX2w~A!Q+0eaZ{MVycPK^psbz)a(bZ%vHa|8ka1ax?5WB>&L0`+VYVk7oBr%DNv+($;q`HHK! +gIHa)*%m(-e#9sm3ZsHT^UK%K(4i9Ajp1M~R@C@!4#dQE#lUD;OiKi1RsjNZcmM?f0`+VYVk7oBr%DNv ++($;q`HHK!gIHa)*%m(-e#9sm3dMUNn!oosZgNI|twmNZeC(lYZa*g7-2eQ3Yy;-pL1po(RWoBV@Y;*ts009Pc +d2nS;ZvX`W0006J2y}UHWlmvjWdH>M0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*;5t>gcQkw +bf~^M){{|8P%hsRk~m~ep32F151Y4WWD*HxX=Q9=PGN0j00jX8Me3tp+xFv-0Xp&G?S=|}9rRaeU`~uM +rbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_6AN}>a%o|1bWUMyWdH>M0!8YhU)%QM +kO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*$IZhiz50p(P||0m=?fQ^Mv6fMp@;h#Lzj#&aRFSj|fwBaByr* +VQ>Wj015$yz}|oy`cC#6Uw2{wE+Sw~);*uMH+9Bf@aCY-RuiZDn*}0S0GmZ(?C=0tIh(Ze?Tx +2XWo~161PWnub7^O8ZDnqB1qWwkZe??6a|Q}@a$#@6CZU+fvcywiMb7^mG2nl6)V`Xr3X>V=` +3R87(aBO95Wo~o^1PNnrZggdCbV+0Z2AHk4+Bm{3x%H=p>4!*u&n~Wpi|4 +ZEyepNC#tbWnpx0asp(;)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+Kjg7fQB3>bs~EXcCXx(drQcb +3B`Fx$)^%va$Ar)C7cUkZfdKHyBH|__hx_vscRWAu^w2r{b^x;wDWyGXd29 +kG60)seH8)H{-R`;$q)jqasX>@6CZb@cgV`T;j +2yJg~GYywm#VTK~nd#>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_ +0000000000{{R30000002WM<=Vqt7^015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1 +V6JV*{3!yZ{M3XW@z+pGEG0000000000{{R300000025D|^b#!w83IavyqhH(ha{vhfMe3tp+xFv-0Xp&G +?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0000000000{{R30 +0000024!+`Z*p@02?9mxqhH(huJC38-{*D7fZ(%hZo23R4S;p`Q9JBQllDyoR%LQdZvz4Xb}#?}b}<1BS7~%^Wpi^vb#7#AWd;HY +aCKr=X>@L7b8`Y@#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OuwwrKJIUBJXnP(l%Y$cDDuY1Bm# +?@QxYCjWldxIc>zVQyn+Z*pa1LUnFrY-Mu+hzwODL;*@eYE_8FVm19wjO(ZbIvDI)B0PALl`~a8 -----END STRICT TYPE LIB----- diff --git a/stl/RGBStd@0.11.0.stl b/stl/RGBStd@0.11.0.stl index 986636e00fa73db6a9b329457f2e7dbc7f63428e..35a16aa59df5bb9522892beb3d1ff25cf8b2a533 100644 GIT binary patch delta 529 zcmZpfz_@2JBL`cMyHjvU3j5@V4hj=BVkQ^ZDNH=uz{oz?kMTPr*Jd}ST*l3BnLPwI zXNvN&)N3&CJLV;43rJ^T&4(#%cX)WZdttHO42LJ(+!>4JaBtOGYpt?@(fo_Z ztI1Z}?96N_`K3uYsSIpPPzxB%+z1#CF`bc+(VHtIMVOStoO3c$^GYE8@CP|7peR2- zjg6Tjw;&nJoSbi`IC&|%0w+gG5>%wxU2$?Ov%=&(?jFkG$OeRf!+=N=Dw)70Z0?c1 z#;9hvc>Z!`e wG+D#l$B;h}HKG_hctVw37`>dcLOYHnnf~?fdA)+gO5#nFl1;_rsm7u90KMtTLI3~& delta 365 zcmdlpnXzR8BL`cMyHjvU3diIH+6ogjVl?x#gxPv7n=M}|lPF}n^Q8gnK~uHs=}W(q zFuO#QCau}e0aWjkpPrdK`J#-%#3c=k9FtWUzcX@gmSxIiv|6HJxw2@Zl-|+?R$YN` z?nv1(j`BlBul5%SS1BJ16A6-TgE9XpYtFmsf>t+*B@~IKcta$qaHn!{nQi3Y&k3JZEN7 zW!St#QiN&qV%ckq3bvE3xi50I7MhwfS-k5|mqxft=((!6RGSx{+q9-Q^xxe)Q{IM! l7***^n`6`-DKRonw)gbmU`qu1gK6SM1qDKWo*XUf0RUx^jr0Hj diff --git a/stl/RGBStd@0.11.0.sty b/stl/RGBStd@0.11.0.sty index 1501e86a..d94c5406 100644 --- a/stl/RGBStd@0.11.0.sty +++ b/stl/RGBStd@0.11.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:H1HLPfyC-5YLlAk!-KWhcUo1-0vtex!9-ODxSmIA-zj1J$qc#western-craft-bogart + Id: stl:xjwnXqkB-dTDlmmW-QIpkDHJ-$!ERsTT-Tdsz4MM-7JIQTT8#jessica-tropic-song Name: RGBStd Version: 0.11.0 Description: RGB standard library @@ -106,9 +106,6 @@ import RGBCommit#tuna-safari-design use RevealedData#olivia-copper-stamp use AssignRevealedValueBlindSealTxid#photo-jump-silicon -import RGBLogic#explain-marvin-bless - use DbcProof#needle-change-forest - import CommitVerify#miller-pancake-elastic use MerkleHash#horse-popcorn-bundle use MerkleProof#price-aloha-grid @@ -126,7 +123,6 @@ import BPCore#totem-holiday-helena use BlindSealTxPtr#fortune-iron-salmon use OpretProof#good-village-flex use SecretSeal#dollar-iris-wizard - use AnchorMerkleProofDbcProof#flash-justice-paradox use BlindSealTxid#media-judge-anita use TxPtr#italian-july-eddie @@ -163,6 +159,11 @@ import Bitcoin#signal-color-cipher use XOnlyPk#clever-swim-carpet +@mnemonic(mayday-rider-diploma) +data AnchoredBundles : tapret#1 ClientBundleTapretProof + | opret ClientBundleOpretProof + | double (tapret ClientBundleTapretProof, opret ClientBundleOpretProof) + @mnemonic(domino-waiter-orlando) data AnnotationName : Std.AlphaCaps, [Std.AlphaNumDash ^ ..0xfe] @@ -175,6 +176,16 @@ data AssignIface : ownedState OwnedIface , required Std.Bool , multiple Std.Bool +@mnemonic(scoop-deluxe-action) +data ClientBundleOpretProof : mpcProof CommitVerify.MerkleProof + , dbcProof BPCore.OpretProof + , bundle RGBCommit.TransitionBundle + +@mnemonic(fame-iris-habitat) +data ClientBundleTapretProof : mpcProof CommitVerify.MerkleProof + , dbcProof BPCore.TapretProof + , bundle RGBCommit.TransitionBundle + @mnemonic(tango-hotel-jamaica) data Consignmentfalse : version ContainerVer , transfer Std.Bool @@ -392,9 +403,7 @@ data ValencyIface : required Std.Bool data VerNo : v0 | v1 -@mnemonic(special-almond-anatomy) -data WitnessBundle : pubWitness RGBCommit.XChainPubWitness - , anchor BPCore.AnchorMerkleProofDbcProof - , bundle RGBCommit.TransitionBundle +@mnemonic(storm-left-reflex) +data WitnessBundle : pubWitness RGBCommit.XChainPubWitness, anchoredBundles AnchoredBundles diff --git a/stl/RGBStorage@0.11.0.sta b/stl/RGBStorage@0.11.0.sta index 85b7610d..f5b246ee 100644 --- a/stl/RGBStorage@0.11.0.sta +++ b/stl/RGBStorage@0.11.0.sta @@ -1,23 +1,23 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:YBgLtVmT-FuzNBPe-1fxIqay-JW4Evd5-Za7fm9w-GLF6JAg#transit-xray-giraffe +Id: stl:7gJzyOSk-9kGbkdS-oKUNJvS-tk6p!Hw-!uhig0T-fkZgi4g#serial-cake-educate Name: RGBStorage Dependencies: - RGBStd#western-craft-bogart, StrictTypes#century-comrade-chess, AluVM#congo-archive-folio, RGBCommit#tuna-safari-design, RGBLogic#explain-marvin-bless, CommitVerify#miller-pancake-elastic, BPCore#totem-holiday-helena, + RGBStd#jessica-tropic-song, Std#ralph-blue-lucky, Bitcoin#signal-color-cipher -Check-SHA256: d9ad4313afd685354c6846af7c3cc13a907b553af88f8e584482c6541807b6dd +Check-SHA256: 876c77f50d4020dcdc728678cb56cdb533a64f4a26f9aed489e6e814bb8e9bcc -3Q|WxQ*>`~VP|CtA5qIa{DS3zlS>Z4!V_T!KNI`QJ| -h6;Zj^jB$MPK+?7Lu3>C`4HI)Q*?4^V{}w`aAk91a5aA+<>R2XhQO_4{AcS-HH^7AVzASV8M4NYxyCjH -L2PwaO=QH?2~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-Vj0sXlLPKwDZE19FDia2b(>AB29AOeYx#=(k -!8In=XQlLX14LMLVywRiQb$5eZ)a&^dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0Th*%N~j&hfyEy&;~+KLvM0r$}AplgPGkh3_fq3Q7_j=2#kPT +3Q|WxQ*>`~VP|CtMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r3sZD*X=8L$d2nTOVsJHoA?4$s +wuZp1Wc+9AOf`(TIbyKWjTy4WkGaM+1wm|eR!wBY)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdTO +M?ynyZEb0EZYmQ7jMFx!r5s@rJ-O*H1;I5Y*Jq{lbOS_Kbz-c)2vSEvOmAmtV|oJ}-)Viz@~C%8KNS}Z +0aQ3s^SOqbBwN-D{wl@OCJaMwZEb0ER%LQ&W_hMrvQRIBF~gy)hQg^4yxce6i-HaxmCGKABZpBR?$8E8 +P(yEWWyU-wUa0|fFy)$MkRq7_9H0IX8xu`8Y|n!X?2-^oKL%1qLQ`~P$}AplgPGkh3_fq3Q7_j=2#kPT _9!;lWR>~GYywm#15DT%6aZ|SrJerP1pIOD57`7Ol|-ogQ6Pjg~y>s-v>!^VNPLfWv4Jz0xkJm$nc4y @@ -161,14 +161,14 @@ n)I5N0000000000|Ns90000004sUgIaBpdDbWd<^b#!w83Ib%r)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2 =g^?i+KiM^)7t~9tEf?*r}jS36zkMYeK9}${s8)2BzjZ?kPr%EZ*FvQVPkYjWCCQw)d@|xKsr716mTQm aB}ROZ@Dgs2ia_2=g^?i+KitFEJ-@Z0;0Ob-P{Wzd?2rs)M&&=&l*}G;Jw22Ix+@lY;R&=Yyb)ZWW?18 O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilm)$WoGNrJmcWTI{*Lx000000RI300000000wetXJ~YD00{ygQOiC2g5`qc -0#Axs7ZjsiFSYD`^x*MIVgSxPN&ctwsMp|!ND`2%gc_Nxrh2qVwA%Us#V;Pkm;mDO$Szy}0000000030 -|Ns9000009W_507X<}?;a{vhfA5qIa{DS3z$bhcTl`&GYj0000000000|NsC0000001Y}`!VE_pNA5qIa{DS3z6r)`)wd{WM;PFag0M0#0{-c;Wd;HTYi@6MZU71bA5qIa{DS3zJmcWTI{*Lx000000RI300000000wetXJ~YD00{!dJSSeM0d+9t +nq`n8nFAc3{t+7!O*d@MgADAF5KTYysMp|!ND`2%gc_Nxrh2qVwA%Us#V;Pkm;mDO$Szy}0000000030 +|Ns9000009W_507X<}?;a{vhf#ylrpsR4B`<(g%XBAEjmpZ*aW6HPa4&w~u?k`PTl(^?v}n^1}ZASkna ++k;MoZJUj+#nJ>$bhcTl`&GYj0000000000|NsC0000001Y}`!VE_pN#ylrpsR4B`<(g%XBAEjmpZ*aW +6HPa4&w~u?k`PTlU_W_(!uc?s(BakzdJ7?EF9^9Gyf?ad??x_c(9*_N0000000000|NsC00000024Qq` +VPj|j2?EAECtj%mbui_cWsoA7100|J5gQXtH*C*?4D6B+O+RUA%8{!~UIganLWV?BTpVMu5IA6dE0Lj! +YuMq;@!bFb0000000960|Nj60000h6Wo<`nZ(?C=Q*>c;Wd;HTYi@6MZU71b#ylrpsR4B`<(g%XBAEjm +pZ*aW6HPa4&w~u?k`PTl<6|AO{83(Yrk|^O`?W3M9CM%AX=A!!j~d9KS7#Oj0%XM12~D{`Iz96ga3kGt a_pUNxh{zZ*=%3u(4f-Vj53~9Q3m-<6)UHjqig^*m4co5us7ukl*0UQzs7w8g#Z8m000000RR90{{R30 00nGmZE17>00Rh3Wo=1rWMy~;1r2X-LUnFrY-LGqWMy~&3Ib%r)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2 =g^?i+KiRR=6W7=VqesjRYGc!>wZFzp>JB4@xD;^wu&SY_r(Ha#MKE+xj;HS^AvC+-Eea3oo~4=i3izi @@ -176,48 +176,47 @@ U+2)E(%Oszdy}<28ig(gSpg+?&9*`C2(3=%09avzwZKZf-~wC#0000000030|Nj600000JVs&n0Y-K}l Zgg^CV{}PwWMy~&3Ib%r)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdBxleIk>g)RqK0VQ|Mwn6X+ txo3vSYd;;z)HQ~0$c)Q#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%Oul2rNlD$O59e#ogQsB77jP l+h5j^*S;D0000000030|Nj600000IVs&n0Y-LwzbZ%vHb4hMwWq1Gz0%XM12~D{`Iz96g -a3kGta_pUNxh{zZ*=%3u(4f-Vj01aUXjT --wZT0^&Yy7N)`YB000000093000000000eiWpZt4ZeeUmZe(S6015(R#MKE+xj;HS^AvC+-Eea3oo~4= -i3iziU+2)E(%OvMidq_i6cBYN^7xEELu$lFU37Sf$J;ty5yrmOX|)6Z2?Auq)d@|xKsr716mTQmaB}RO -Z@Dgs2ia_2=g^?i+KiJBynwMZT8l5kSW@l}O=!>^xB4~9n`Dx!RtcK)nwJ0o00000009300000000000 -0000000960{{R30000P0Wo=V*VRL8(4G42%Xk~3-bYTDr0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u -(4f-VjFeK-+XJhss8OG%_CC-Q>(otsF+cqN0Qy}ddQ=3E5CR`j%RT&p<$~n`Pl{R>6r)`)wd{WM;PFag -0M0#0{-@G+FLmd)8^C0+InTyb%?WTG%$DZ$m;bAR)ya#VGE@Kn000000093000000000JQW?^Gxa{vkg -A5qIa{DS3zp#+${pKVqYC -0v}P!J^X^@g5?5Fidq*Gqg^kx?0)p%@k(L<&OJ%~r#Z(OK7J55&$qsubbafuzL1-^j%|=cN>I>nnK4)) -Pyhe`000000RI300000000(DfZe??2a{vkgWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmp9m~T -I>-W|y2ahx3nF|Vuawki#7NH?S|Q-Q!u2{b0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-VjO?=J -cE6dyPJT+tk%Iz|R3_dTDo~ZL;TN>Nv6r)`)wd{WM;PFag0M0#0{-*|*t+(1Z!Y#S=r-tc=NPf>PeW=$`IKP*ssSB}HE2RJl0v}P!J^X^@ -g5?5Fidq*Gqg^kx?0)p%@k(L<&OJ%~r(-?SiLgsaRw~c9&Ny{YCK_TCaeS`x+X~XLW@}|UwEzGB00000 -0RI300000000000000000RI300000000&}qZe(m_a{vkgWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWl -pwilm1ACLTJsO2B2U!6ncg?mz@CdC==Kxq?gSEg)z2E{|0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u -(4f-VjIWKC(E(H_nGEpD*KTAo3`$}tLz4xH6U7V?G -015(R#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%Oub$mV(;bz)!CmQ_M(k?Vd!kfCo{nDM?)_qK{8 -68FUdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmQ>XLl0V(0al>0fVsbCfs) -I{K8&0000000000|NsC00000033q99Ze??GWpe-u0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-V -jEQSlCC$c=UszhlV5m?Ru@{iVU*wrVdeH+Q@FPbX@d6)F%RT&p<$~n`Pl{R>6r)`)wd{WM;PFag0M0#0 -{-<6r_K53+2$;2e|4Ao^X6@^Cu3Qu&Ia3E~c^u(!$n*dJ0000000960|Nj60000YNbaY{3Xl-R~baMa- -0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-VjD&FwlPpg3!?y@aX^XIja4CK{WF&t@k=WXUZP9(Y -H~bW>$vY;yn!0%XM12~D{`Iz96g -a3kGta_pUNxh{zZ*=%3u(4f-VjE}p*=tr7Pr6F_xjAC6(~TLj#*ewiHWCD6r)`)wd{WM;PFag0M0#0{-=f*5G-hCV9w&(UffE` -hM!G~aLQ!~gAR@AcC9KZUqt`_000000096000000000P0Wo=V*VRU5%0tt6%bZ%vHb7gY?3Ib%r)d@|x -Ksr716mTQmaB}ROZ@Dgs2ia_2=g^?i+Kh>7SS8KIkY89@$6%;X7qJ(R#b4x^L3+^xAn+qc8}R~eDia2b -(>AB29AOeYx#=(k!8In=XQlLX14LMLVywUR3nQ8ri$WPp5w@a4b3LR7M69fMnD+{F6rHCsWOZ=>00000 -00030|Ns9000009V{dMBa$#e1a{vkgWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmp9m~TI>-W| -y2ahx3nF|Vuawki#7NH?S|Q-Q!u2{b0d|^F*?W9|>m72;^XjNjCf456piKdvUO#1@>k1Zy`v3p{00000 -0RI300000000 +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 -----END STRICT TYPE LIB----- diff --git a/stl/RGBStorage@0.11.0.stl b/stl/RGBStorage@0.11.0.stl index ccf4334fee3440e31d12bb7496297206be000950..58718526537f85663aef62e333584bc0773adf8d 100644 GIT binary patch delta 620 zcmeB7`<}|f73A&|T#{dun4Zcx`J%qU#NeCi$86N&Rx*|vJe`#~L1`wl%=~|X(!##x zIp>>s-b@nkwPyqCN!hH!$gQG4Nb%$fIfcpPs!?BZbW#n)4V5YMIQYO@spyv=s@Pv{3shVMWt)lnE-@d{gHn5iY+Y gsj&HxUL6rC8w@TIv~+TzArXE&C9SaelA$>x0H25HtN;K2 delta 619 zcmeyK+L>m|73A&|T#{dun4ZchA9&jKPt((;r%e7`QQ{(tWA(Sbsr&NaqgN8cIa|+v z%h|wcQzq}%SD2`CbF&U3w~7KGJ(DZs6egFe$`V$%Mb(0^A|5p>!ir`{DNJrt(;}#F z^940krpb)T%9Hc;6eh=LDQtGr>|-RTZE~ut!ekL`DZ&c}>es$XSW%0PGC@U~ ikL#Qy?E1|c^yU#(H961VB0&o$#~Tv%-{u8|;fw&hA|opR diff --git a/stl/RGBStorage@0.11.0.sty b/stl/RGBStorage@0.11.0.sty index c647d3e2..380b8b76 100644 --- a/stl/RGBStorage@0.11.0.sty +++ b/stl/RGBStorage@0.11.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:YBgLtVmT-FuzNBPe-1fxIqay-JW4Evd5-Za7fm9w-GLF6JAg#transit-xray-giraffe + Id: stl:7gJzyOSk-9kGbkdS-oKUNJvS-tk6p!Hw-!uhig0T-fkZgi4g#serial-cake-educate Name: RGBStorage Version: 0.11.0 Description: RGB storage library @@ -11,50 +11,6 @@ @context typelib RGBStorage -import RGBStd#western-craft-bogart - use PubWitness#paper-visa-storm - use ContentRef#polo-ramirez-parker - use SigBlob#insect-cello-avalon - use AnnotationName#domino-waiter-orlando - use TransitionIface#axiom-parker-pyramid - use NamedFieldTransitionType#express-brush-desire - use ExtensionIface#model-ramirez-mentor - use Iface#violin-student-system - use IfaceId#nova-cola-carbon - use ValencyIface#buzzer-holiday-fiber - use Annotations#spend-linda-romeo - use AssignIface#fractal-baker-outside - use VerNo#textile-next-stretch - use NamedFieldValencyType#invest-apollo-inca - use ImplId#seminar-data-table - use SupplSub#canoe-denmark-short - use SealWitness#vanilla-crimson-zero - use OutputAssignmentRevealedData#dinner-honey-saturn - use Supplement#caviar-zebra-precise - use SupplId#pilot-claudia-minute - use OutputAssignmentRevealedAttach#miami-diagram-mineral - use NamedFieldExtensionType#tuna-archer-melon - use AnchorSet#shadow-dominic-pencil - use NamedFieldGlobalStateType#museum-ohio-arizona - use GenesisIface#rocket-paradox-press - use IfaceImpl#permit-learn-samba - use ContentSigs#oval-sister-triton - use SupplItem#jargon-orchid-forget - use Modifier#saturn-escort-jordan - use NamedFieldAssignmentType#origin-caramel-flipper - use TrustLevel#cobra-script-albino - use NamedFieldMetaType#prefix-carmen-artist - use NamedVariantu8#star-pilgrim-pilgrim - use OpWitness#valid-toronto-gibson - use GlobalIface#concert-combat-charm - use SchemaIfaces#fossil-nepal-airline - use OutputAssignmentRevealedValue#aspect-caramel-diana - use SupplMap#sailor-observe-bundle - use OwnedIface#delphi-athlete-fresh - use ContentId#scarlet-portal-office - use GlobalOut#capital-agatha-bruno - use OutputAssignmentVoidState#mars-alabama-public - import StrictTypes#century-comrade-chess use VariantName#theory-austin-before use FieldName#present-flute-herman @@ -182,6 +138,50 @@ import BPCore#totem-holiday-helena use BlindSealTxid#media-judge-anita use TxPtr#italian-july-eddie +import RGBStd#jessica-tropic-song + use PubWitness#paper-visa-storm + use ContentRef#polo-ramirez-parker + use SigBlob#insect-cello-avalon + use AnnotationName#domino-waiter-orlando + use TransitionIface#axiom-parker-pyramid + use NamedFieldTransitionType#express-brush-desire + use ExtensionIface#model-ramirez-mentor + use Iface#violin-student-system + use IfaceId#nova-cola-carbon + use ValencyIface#buzzer-holiday-fiber + use Annotations#spend-linda-romeo + use AssignIface#fractal-baker-outside + use VerNo#textile-next-stretch + use NamedFieldValencyType#invest-apollo-inca + use ImplId#seminar-data-table + use SupplSub#canoe-denmark-short + use SealWitness#vanilla-crimson-zero + use OutputAssignmentRevealedData#dinner-honey-saturn + use Supplement#caviar-zebra-precise + use SupplId#pilot-claudia-minute + use OutputAssignmentRevealedAttach#miami-diagram-mineral + use NamedFieldExtensionType#tuna-archer-melon + use AnchorSet#shadow-dominic-pencil + use NamedFieldGlobalStateType#museum-ohio-arizona + use GenesisIface#rocket-paradox-press + use IfaceImpl#permit-learn-samba + use ContentSigs#oval-sister-triton + use SupplItem#jargon-orchid-forget + use Modifier#saturn-escort-jordan + use NamedFieldAssignmentType#origin-caramel-flipper + use TrustLevel#cobra-script-albino + use NamedFieldMetaType#prefix-carmen-artist + use NamedVariantu8#star-pilgrim-pilgrim + use OpWitness#valid-toronto-gibson + use GlobalIface#concert-combat-charm + use SchemaIfaces#fossil-nepal-airline + use OutputAssignmentRevealedValue#aspect-caramel-diana + use SupplMap#sailor-observe-bundle + use OwnedIface#delphi-athlete-fresh + use ContentId#scarlet-portal-office + use GlobalOut#capital-agatha-bruno + use OutputAssignmentVoidState#mars-alabama-public + import Std#ralph-blue-lucky use AlphaCaps#picnic-soprano-aurora use AsciiPrintable#ultra-sunset-format @@ -231,10 +231,10 @@ data MemContractState : schemaId RGBCommit.SchemaId @mnemonic(gilbert-torpedo-digital) data MemGlobalState : known {RGBStd.GlobalOut -> ^ ..0xffffffff RGBCommit.DataState}, limit U24 -@mnemonic(savage-joshua-clone) +@mnemonic(dialog-parody-ralph) data MemIndex : opBundleIndex {RGBCommit.OpId -> ^ ..0xffffff RGBCommit.BundleId} , bundleContractIndex {RGBCommit.BundleId -> ^ ..0xffffff RGBCommit.ContractId} - , bundleWitnessIndex {RGBCommit.BundleId -> ^ ..0xffffff {RGBCommit.XChainTxid ^ ..0xff}} + , bundleWitnessIndex {RGBCommit.BundleId -> ^ ..0xffffff RGBCommit.XChainTxid} , contractIndex {RGBCommit.ContractId -> ^ ..0xff ContractIndex} , terminalIndex {RGBCommit.XChainSecretSeal -> ^ ..0xffffff {RGBCommit.Opout ^ ..0xff}} diff --git a/stl/Transfer.vesper b/stl/Transfer.vesper index 737079e6..ca6ac774 100644 --- a/stl/Transfer.vesper +++ b/stl/Transfer.vesper @@ -473,263 +473,1072 @@ Consignmenttrue rec witness bytes len=2 aka=ReservedBytes2 bundles set len=0..MAX32 WitnessBundle rec - bundle rec TransitionBundle - closeMethod enum Method opretFirst=0 tapretFirst=1 - inputMap map len=1..MAX16 aka=InputMap - key is U32 aka=Vout - value bytes len=32 aka=OpId - knownTransitions map len=1..MAX16 - key bytes len=32 aka=OpId - value rec Transition - ffv is U16 aka=Ffv - contractId bytes len=32 aka=ContractId - nonce is U64 - transitionType is U16 aka=TransitionType - metadata map len=0..MAX8 aka=Metadata - key is U16 aka=MetaType - value bytes len=0..MAX16 aka=MetaValue - globals map len=0..MAX8 aka=GlobalState - key is U16 aka=GlobalStateType - value list len=1..MAX16 aka=GlobalValues - element bytes len=0..MAX16 aka=DataState - inputs set len=0..MAX16 aka=Inputs - Input rec - prevOut rec Opout - op bytes len=32 aka=OpId - ty is U16 aka=AssignmentType - no is U16 - reserved bytes len=2 aka=ReservedBytes2 - assignments map len=0..MAX8 aka=AssignmentsBlindSealTxPtr - key is U16 aka=AssignmentType - value union TypedAssignsBlindSealTxPtr - declarative list len=0..MAX16 wrapped tag=0 - AssignVoidStateBlindSealTxPtr union - confidential rec tag=0 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state is Unit aka=VoidState - lock bytes len=2 aka=ReservedBytes2 - confidentialState rec tag=1 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state is Unit aka=VoidState - lock bytes len=2 aka=ReservedBytes2 - confidentialSeal rec tag=2 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state is Unit aka=VoidState - lock bytes len=2 aka=ReservedBytes2 - revealed rec tag=3 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state is Unit aka=VoidState - lock bytes len=2 aka=ReservedBytes2 - fungible list len=0..MAX16 wrapped tag=1 - AssignRevealedValueBlindSealTxPtr union - confidential rec tag=0 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state rec ConcealedFungible - commitment bytes len=33 aka=PedersenCommitment - rangeProof bytes len=33 aka=PedersenCommitment - lock bytes len=2 aka=ReservedBytes2 - confidentialState rec tag=1 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state rec ConcealedFungible - commitment bytes len=33 aka=PedersenCommitment - rangeProof bytes len=33 aka=PedersenCommitment - lock bytes len=2 aka=ReservedBytes2 - confidentialSeal rec tag=2 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state rec RevealedFungible - value union FungibleState - bits64 is U64 wrapped tag=0 - blinding bytes len=32 aka=BlindingFactor - tag bytes len=32 aka=AssetTag - lock bytes len=2 aka=ReservedBytes2 - revealed rec tag=3 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state rec RevealedFungible - value union FungibleState - bits64 is U64 wrapped tag=0 - blinding bytes len=32 aka=BlindingFactor - tag bytes len=32 aka=AssetTag - lock bytes len=2 aka=ReservedBytes2 - structured list len=0..MAX16 wrapped tag=2 - AssignRevealedDataBlindSealTxPtr union - confidential rec tag=0 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state bytes len=32 aka=ConcealedData - lock bytes len=2 aka=ReservedBytes2 - confidentialState rec tag=1 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state bytes len=32 aka=ConcealedData - lock bytes len=2 aka=ReservedBytes2 - confidentialSeal rec tag=2 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state rec RevealedData - value bytes len=0..MAX16 aka=DataState - salt is U128 - lock bytes len=2 aka=ReservedBytes2 - revealed rec tag=3 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state rec RevealedData - value bytes len=0..MAX16 aka=DataState - salt is U128 - lock bytes len=2 aka=ReservedBytes2 - attachment list len=0..MAX16 wrapped tag=3 - AssignRevealedAttachBlindSealTxPtr union - confidential rec tag=0 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state bytes len=32 aka=ConcealedAttach - lock bytes len=2 aka=ReservedBytes2 - confidentialState rec tag=1 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state bytes len=32 aka=ConcealedAttach - lock bytes len=2 aka=ReservedBytes2 - confidentialSeal rec tag=2 - seal union XChainSecretSeal - bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 - liquid bytes len=32 wrapped aka=SecretSeal tag=1 - state rec RevealedAttach - file rec AttachState - id bytes len=32 aka=AttachId - mediaType enum MediaType any=255 - salt is U64 - lock bytes len=2 aka=ReservedBytes2 - revealed rec tag=3 - seal union XChainBlindSealTxPtr - bitcoin rec BlindSealTxPtr wrapped tag=0 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - liquid rec BlindSealTxPtr wrapped tag=1 - method enum Method opretFirst=0 tapretFirst=1 - txid union TxPtr - witnessTx is Unit tag=0 - txid bytes len=32 wrapped aka=Txid tag=1 - vout is U32 aka=Vout - blinding is U64 - state rec RevealedAttach - file rec AttachState - id bytes len=32 aka=AttachId - mediaType enum MediaType any=255 - salt is U64 - lock bytes len=2 aka=ReservedBytes2 - valencies set len=0..MAX8 aka=Valencies - element is U16 aka=ValencyType - validator bytes len=1 aka=ReservedBytes1 - witness bytes len=2 aka=ReservedBytes2 + anchoredBundles union AnchoredBundles + tapret rec ClientBundleTapretProof wrapped tag=0 + mpcProof rec MerkleProof + pos is U32 + cofactor is U16 + path list len=0..32 + element bytes len=32 aka=MerkleHash + dbcProof rec TapretProof + pathProof rec TapretPathProof + some union TapretNodePartner option wrapped tag=1 + rightBranch rec TapretRightBranch wrapped tag=2 + nonce is U8 + bundle rec TransitionBundle + closeMethod enum Method opretFirst=0 tapretFirst=1 + inputMap map len=1..MAX16 aka=InputMap + key is U32 aka=Vout + value bytes len=32 aka=OpId + knownTransitions map len=1..MAX16 + key bytes len=32 aka=OpId + value rec Transition + ffv is U16 aka=Ffv + contractId bytes len=32 aka=ContractId + nonce is U64 + transitionType is U16 aka=TransitionType + metadata map len=0..MAX8 aka=Metadata + key is U16 aka=MetaType + value bytes len=0..MAX16 aka=MetaValue + globals map len=0..MAX8 aka=GlobalState + key is U16 aka=GlobalStateType + value list len=1..MAX16 aka=GlobalValues + element bytes len=0..MAX16 aka=DataState + inputs set len=0..MAX16 aka=Inputs + Input rec + prevOut rec Opout + op bytes len=32 aka=OpId + ty is U16 aka=AssignmentType + no is U16 + reserved bytes len=2 aka=ReservedBytes2 + assignments map len=0..MAX8 aka=AssignmentsBlindSealTxPtr + key is U16 aka=AssignmentType + value union TypedAssignsBlindSealTxPtr + declarative list len=0..MAX16 wrapped tag=0 + AssignVoidStateBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + fungible list len=0..MAX16 wrapped tag=1 + AssignRevealedValueBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + structured list len=0..MAX16 wrapped tag=2 + AssignRevealedDataBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + attachment list len=0..MAX16 wrapped tag=3 + AssignRevealedAttachBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + valencies set len=0..MAX8 aka=Valencies + element is U16 aka=ValencyType + validator bytes len=1 aka=ReservedBytes1 + witness bytes len=2 aka=ReservedBytes2 + opret rec ClientBundleOpretProof wrapped tag=1 + mpcProof rec MerkleProof + pos is U32 + cofactor is U16 + path list len=0..32 + element bytes len=32 aka=MerkleHash + dbcProof is Unit aka=OpretProof + bundle rec TransitionBundle + closeMethod enum Method opretFirst=0 tapretFirst=1 + inputMap map len=1..MAX16 aka=InputMap + key is U32 aka=Vout + value bytes len=32 aka=OpId + knownTransitions map len=1..MAX16 + key bytes len=32 aka=OpId + value rec Transition + ffv is U16 aka=Ffv + contractId bytes len=32 aka=ContractId + nonce is U64 + transitionType is U16 aka=TransitionType + metadata map len=0..MAX8 aka=Metadata + key is U16 aka=MetaType + value bytes len=0..MAX16 aka=MetaValue + globals map len=0..MAX8 aka=GlobalState + key is U16 aka=GlobalStateType + value list len=1..MAX16 aka=GlobalValues + element bytes len=0..MAX16 aka=DataState + inputs set len=0..MAX16 aka=Inputs + Input rec + prevOut rec Opout + op bytes len=32 aka=OpId + ty is U16 aka=AssignmentType + no is U16 + reserved bytes len=2 aka=ReservedBytes2 + assignments map len=0..MAX8 aka=AssignmentsBlindSealTxPtr + key is U16 aka=AssignmentType + value union TypedAssignsBlindSealTxPtr + declarative list len=0..MAX16 wrapped tag=0 + AssignVoidStateBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + fungible list len=0..MAX16 wrapped tag=1 + AssignRevealedValueBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + structured list len=0..MAX16 wrapped tag=2 + AssignRevealedDataBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + attachment list len=0..MAX16 wrapped tag=3 + AssignRevealedAttachBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + valencies set len=0..MAX8 aka=Valencies + element is U16 aka=ValencyType + validator bytes len=1 aka=ReservedBytes1 + witness bytes len=2 aka=ReservedBytes2 + double rec tag=2 + tapret rec ClientBundleTapretProof + mpcProof rec MerkleProof + pos is U32 + cofactor is U16 + path list len=0..32 + element bytes len=32 aka=MerkleHash + dbcProof rec TapretProof + pathProof rec TapretPathProof + some union TapretNodePartner option wrapped tag=1 + rightBranch rec TapretRightBranch wrapped tag=2 + nonce is U8 + bundle rec TransitionBundle + closeMethod enum Method opretFirst=0 tapretFirst=1 + inputMap map len=1..MAX16 aka=InputMap + key is U32 aka=Vout + value bytes len=32 aka=OpId + knownTransitions map len=1..MAX16 + key bytes len=32 aka=OpId + value rec Transition + ffv is U16 aka=Ffv + contractId bytes len=32 aka=ContractId + nonce is U64 + transitionType is U16 aka=TransitionType + metadata map len=0..MAX8 aka=Metadata + key is U16 aka=MetaType + value bytes len=0..MAX16 aka=MetaValue + globals map len=0..MAX8 aka=GlobalState + key is U16 aka=GlobalStateType + value list len=1..MAX16 aka=GlobalValues + element bytes len=0..MAX16 aka=DataState + inputs set len=0..MAX16 aka=Inputs + Input rec + prevOut rec Opout + op bytes len=32 aka=OpId + ty is U16 aka=AssignmentType + no is U16 + reserved bytes len=2 aka=ReservedBytes2 + assignments map len=0..MAX8 aka=AssignmentsBlindSealTxPtr + key is U16 aka=AssignmentType + value union TypedAssignsBlindSealTxPtr + declarative list len=0..MAX16 wrapped tag=0 + AssignVoidStateBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + fungible list len=0..MAX16 wrapped tag=1 + AssignRevealedValueBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + structured list len=0..MAX16 wrapped tag=2 + AssignRevealedDataBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + attachment list len=0..MAX16 wrapped tag=3 + AssignRevealedAttachBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + valencies set len=0..MAX8 aka=Valencies + element is U16 aka=ValencyType + validator bytes len=1 aka=ReservedBytes1 + witness bytes len=2 aka=ReservedBytes2 + opret rec ClientBundleOpretProof + mpcProof rec MerkleProof + pos is U32 + cofactor is U16 + path list len=0..32 + element bytes len=32 aka=MerkleHash + dbcProof is Unit aka=OpretProof + bundle rec TransitionBundle + closeMethod enum Method opretFirst=0 tapretFirst=1 + inputMap map len=1..MAX16 aka=InputMap + key is U32 aka=Vout + value bytes len=32 aka=OpId + knownTransitions map len=1..MAX16 + key bytes len=32 aka=OpId + value rec Transition + ffv is U16 aka=Ffv + contractId bytes len=32 aka=ContractId + nonce is U64 + transitionType is U16 aka=TransitionType + metadata map len=0..MAX8 aka=Metadata + key is U16 aka=MetaType + value bytes len=0..MAX16 aka=MetaValue + globals map len=0..MAX8 aka=GlobalState + key is U16 aka=GlobalStateType + value list len=1..MAX16 aka=GlobalValues + element bytes len=0..MAX16 aka=DataState + inputs set len=0..MAX16 aka=Inputs + Input rec + prevOut rec Opout + op bytes len=32 aka=OpId + ty is U16 aka=AssignmentType + no is U16 + reserved bytes len=2 aka=ReservedBytes2 + assignments map len=0..MAX8 aka=AssignmentsBlindSealTxPtr + key is U16 aka=AssignmentType + value union TypedAssignsBlindSealTxPtr + declarative list len=0..MAX16 wrapped tag=0 + AssignVoidStateBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state is Unit aka=VoidState + lock bytes len=2 aka=ReservedBytes2 + fungible list len=0..MAX16 wrapped tag=1 + AssignRevealedValueBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec ConcealedFungible + commitment bytes len=33 aka=PedersenCommitment + rangeProof bytes len=33 aka=PedersenCommitment + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedFungible + value union FungibleState + bits64 is U64 wrapped tag=0 + blinding bytes len=32 aka=BlindingFactor + tag bytes len=32 aka=AssetTag + lock bytes len=2 aka=ReservedBytes2 + structured list len=0..MAX16 wrapped tag=2 + AssignRevealedDataBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedData + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedData + value bytes len=0..MAX16 aka=DataState + salt is U128 + lock bytes len=2 aka=ReservedBytes2 + attachment list len=0..MAX16 wrapped tag=3 + AssignRevealedAttachBlindSealTxPtr union + confidential rec tag=0 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialState rec tag=1 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state bytes len=32 aka=ConcealedAttach + lock bytes len=2 aka=ReservedBytes2 + confidentialSeal rec tag=2 + seal union XChainSecretSeal + bitcoin bytes len=32 wrapped aka=SecretSeal tag=0 + liquid bytes len=32 wrapped aka=SecretSeal tag=1 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + revealed rec tag=3 + seal union XChainBlindSealTxPtr + bitcoin rec BlindSealTxPtr wrapped tag=0 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + liquid rec BlindSealTxPtr wrapped tag=1 + method enum Method opretFirst=0 tapretFirst=1 + txid union TxPtr + witnessTx is Unit tag=0 + txid bytes len=32 wrapped aka=Txid tag=1 + vout is U32 aka=Vout + blinding is U64 + state rec RevealedAttach + file rec AttachState + id bytes len=32 aka=AttachId + mediaType enum MediaType any=255 + salt is U64 + lock bytes len=2 aka=ReservedBytes2 + valencies set len=0..MAX8 aka=Valencies + element is U16 aka=ValencyType + validator bytes len=1 aka=ReservedBytes1 + witness bytes len=2 aka=ReservedBytes2 schema rec Schema ffv is U16 aka=Ffv flags bytes len=1 aka=ReservedBytes1 From d25dd62bb4e9e5e54727341f805cc32582b99511 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Sat, 12 Oct 2024 13:17:28 +0200 Subject: [PATCH 3/5] chore: use new DBC method APIs --- Cargo.lock | 15 ++-- Cargo.toml | 7 ++ src/containers/anchors.rs | 2 +- src/stl/stl.rs | 4 +- stl/RGBStd@0.11.0.sta | 126 +++++++++++++-------------- stl/RGBStd@0.11.0.stl | Bin 18876 -> 18876 bytes stl/RGBStd@0.11.0.sty | 70 +++++++-------- stl/RGBStorage@0.11.0.sta | 178 +++++++++++++++++++------------------- stl/RGBStorage@0.11.0.stl | Bin 13047 -> 13047 bytes stl/RGBStorage@0.11.0.sty | 122 +++++++++++++------------- 10 files changed, 263 insertions(+), 261 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1e4aa19b..580c91a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -215,8 +215,7 @@ dependencies = [ [[package]] name = "bp-consensus" version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3a99a46063d23d20a3177a04923652b245f31c2a04a6d0c47d5a93dc201a80" +source = "git+https://github.com/BP-WG/bp-core?branch=methods#725a24e3ec1d5e3951cb317eae95c200115295ff" dependencies = [ "amplify", "chrono", @@ -230,8 +229,7 @@ dependencies = [ [[package]] name = "bp-core" version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b8caf04291e2703ce267b1f8baf14f03879a6d1a5afe76e011ada489f172f9" +source = "git+https://github.com/BP-WG/bp-core?branch=methods#725a24e3ec1d5e3951cb317eae95c200115295ff" dependencies = [ "amplify", "bp-consensus", @@ -249,8 +247,7 @@ dependencies = [ [[package]] name = "bp-dbc" version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc4081db2147411381b9650765ce683e5065559f1125508696f79cc4cbfedf" +source = "git+https://github.com/BP-WG/bp-core?branch=methods#725a24e3ec1d5e3951cb317eae95c200115295ff" dependencies = [ "amplify", "base85", @@ -276,8 +273,7 @@ dependencies = [ [[package]] name = "bp-seals" version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d607238c2bf2c34d048d14cd798a6365306e0fb6b02211235f3ccad0bc7fa8f1" +source = "git+https://github.com/BP-WG/bp-core?branch=methods#725a24e3ec1d5e3951cb317eae95c200115295ff" dependencies = [ "amplify", "baid64", @@ -669,8 +665,7 @@ dependencies = [ [[package]] name = "rgb-core" version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43dc70212f5eff8189f3cdfef2d11f53f7be4c4128db9839b5d56a0f9ef60c98" +source = "git+https://github.com/RGB-WG/rgb-core?branch=methods#6ea499ddadf24c98b806b9a7342ca5d3fa5d5b70" dependencies = [ "aluvm", "amplify", diff --git a/Cargo.toml b/Cargo.toml index b4715406..93b41b58 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -97,3 +97,10 @@ wasm-bindgen-test = "0.3" [package.metadata.docs.rs] features = ["all"] + +[patch.crates-io] +bp-consensus = { git = "https://github.com/BP-WG/bp-core", branch = "methods" } +bp-dbc = { git = "https://github.com/BP-WG/bp-core", branch = "methods" } +bp-seals = { git = "https://github.com/BP-WG/bp-core", branch = "methods" } +bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "methods" } +rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "methods" } diff --git a/src/containers/anchors.rs b/src/containers/anchors.rs index 2ac5580b..92ff6853 100644 --- a/src/containers/anchors.rs +++ b/src/containers/anchors.rs @@ -293,7 +293,7 @@ impl ClientBundle { /// /// Panics if DBC proof and bundle have different closing methods pub fn new(mpc_proof: mpc::MerkleProof, dbc_proof: D, bundle: TransitionBundle) -> Self { - assert_eq!(D::METHOD, bundle.close_method); + assert_eq!(dbc_proof.method(), bundle.close_method); Self { mpc_proof, dbc_proof, diff --git a/src/stl/stl.rs b/src/stl/stl.rs index ea509e37..bc18c9cf 100644 --- a/src/stl/stl.rs +++ b/src/stl/stl.rs @@ -41,7 +41,7 @@ use crate::LIB_NAME_RGB_STD; /// Strict types id for the library providing standard data types which may be /// used in RGB smart contracts. pub const LIB_ID_RGB_STORAGE: &str = - "stl:7gJzyOSk-9kGbkdS-oKUNJvS-tk6p!Hw-!uhig0T-fkZgi4g#serial-cake-educate"; + "stl:t8loV$Vb-Z8hGMSi-pC9dCUe-Lpy$rm8-CGtTeJa-6ll2sCk#guest-infant-crash"; /// Strict types id for the library providing standard data types which may be /// used in RGB smart contracts. @@ -50,7 +50,7 @@ pub const LIB_ID_RGB_CONTRACT: &str = /// Strict types id for the library representing of RGB StdLib data types. pub const LIB_ID_RGB_STD: &str = - "stl:xjwnXqkB-dTDlmmW-QIpkDHJ-$!ERsTT-Tdsz4MM-7JIQTT8#jessica-tropic-song"; + "stl:JhUC5JgH-Kwps4cO-ZNUklUj-UP6boFp-OY!18Kx-xOSJaVQ#hair-magnum-helena"; fn _rgb_std_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB_STD), tiny_bset! { diff --git a/stl/RGBStd@0.11.0.sta b/stl/RGBStd@0.11.0.sta index cb9acb00..5c9d924c 100644 --- a/stl/RGBStd@0.11.0.sta +++ b/stl/RGBStd@0.11.0.sta @@ -1,20 +1,20 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:xjwnXqkB-dTDlmmW-QIpkDHJ-$!ERsTT-Tdsz4MM-7JIQTT8#jessica-tropic-song +Id: stl:JhUC5JgH-Kwps4cO-ZNUklUj-UP6boFp-OY!18Kx-xOSJaVQ#hair-magnum-helena Name: RGBStd Dependencies: + RGBCommit#harvest-person-orion, StrictTypes#century-comrade-chess, + BPCore#austin-story-retro, AluVM#congo-archive-folio, - RGBCommit#tuna-safari-design, CommitVerify#miller-pancake-elastic, - BPCore#totem-holiday-helena, Std#ralph-blue-lucky, Bitcoin#signal-color-cipher -Check-SHA256: cf7ac9aaf6dc25471d0da11c0a361933a242801a12c9561f0229a1a43abb0e0b +Check-SHA256: 6a9228bc3dd61ed396d19a0d3e71c3a3dfc999d232e57ec13c1488bb0b6eeb91 -22w{tQ*>kpMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r3sZD*X=8L$d2nTOVsJHoA?4$swuZp1 -Wc+9AOf`(TIbyKWjTy4WkGaM+1wm|eR!wBY)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdTOM?yny -ZEb0EdIKHbX?@G`sCP;~6&DQwR5(-fxrUo0Th*%N~j&hfyEy&;~+KLvM0r$}AplgPGkh3_fq3Q7_j=2#kPT_9!;lWR>~GYywm#15kpAXg`>_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{j2~tNwLvL+uX>>*EqhH(h&*4NaBbD49mT$3z|G4nQgoFBhHh%l@K06L}1!AJ%| +P(yEWWnyqOe<9`Lptgpr6F_xjAC6(~TLj#*ewiHU&X!byiJ!10COKearHwcS=7M7YzYaI8*bv +hMOc?)(rkC#nUDXLvL+uX>?X)a%pCH$}AplgPGkh3_fq3Q7_j=2#kPT_9!;lWR>~GYywm#15DT%6aZ| SrJerP1pIOD57`7Ol|-ogQ6Pjg~y>s-v>!^VNPLfWv4Jz0xkJm$nc4yMWR2J-cc#Q6SofWC)gp7L6!Sc @@ -123,67 +123,67 @@ Yywm#VTK~nd#>CWCF@89&dx0-7pM3Z=O*v*GCA9 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 -wgM1*ibOB +_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jgmDd%EKc;pw+KsVi?D}qDSkO*B!5Mb*xG|_(S5o&00;m8 KmY&$000000RR900000000000000000RR6000000019(yXKrD1b#i5M015%()D=(>(T2L(qY0=?Nz4Ev5gyU5%_yeyFzybaG*C b7p070?I5NZ-bfLFbqC#o>4E?M+l67UG^w8*<_XZ#%uyqCt-#n(R;4&W&+>mb;*F>vukd;=m`ygb@x#_ ->`RmOO$l^ma&2jDVQg~%3Ib%r)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdBxleIk>g)RqK0VQ|M -wn6X+txo3vSYd;;z)HQ~0$c)Q#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OvMidq_i6cBYN^7xEE -Lu$lFU37Sf$J;ty5yrmOX|)6Z0000000030{{R3000007XJu|>b7^w|WW?18O}RiiJ@XWBBi(Rv?4579 -E{O-(Y+vWlpwilm?6T%|znQ^KeoD%bg94CLCf*q;P?fLY7qq^#2NiM*3T1e7Wo~n6Z*Fq{2?Auq)d@|x -Ksr716mTQmaB}ROZ@Dgs2ia_2=g^?i+Kf}D^XdU9;lkvmMR*4bh)jz;q`~Q5Z+&x=I0QQSl+6GD00000 +>`RmOO$l^ma&2jDVQg~%3IZTkC#?5~OapN(_Fs6GvFQy{P|gRa2*}s1Y~I%9#i;{(leIk>g)RqK0VQ|M +wn6X+txo3vSYd;;z)HQ~0$c(hS0}9Zh)e@b7^w|AXg`>_lQgbaV_>=c$Ts04O39g +2dD_h*R5>c*5<{j?6T%|znQ^KeoD%bg94CLCf*q;P?fLY7qq^#2NiM*3T1e7Wo~n6Z*Fq{2?8KjC#?5~ +OapN(_Fs6GvFQy{P|gRa2*}s1Y~I%9#i>)L^XdU9;lkvmMR*4bh)jz;q`~Q5Z+&x=I0QQSl+6GD00000 00960|Nj60000MKb#7#AWpe-t0nT^OmoUfeVvhY+ARw!>`>M$upk~C-sV(3xjy;4dI{*Lx000000RR90 -{{R3000whoXk~3-0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-Vj5&K?hRF9oualB}P71SaJfwx= +{{R3000whoXk~3-0w7l>toMja192_(UwD?W=?zm*&IhOn$k(lG-qz;DsX2RKhRF9oualB}P71SaJfwx= uHX^JIK`}#x3$o4Af`kVHyQ&~TYCSRqgWgjZ$<5FZnj cuT6B5B6)POqpHCTrHl4#QtZa;zni70000000000{{R30000003v+dFaBO95Wo~qH00{wOJ=2M>OG#EL &$!Mwbx&PZdlOljoA7|k;k>s6qoa5|8f~f~{V{&P5baMa+0%CAAe<9`L ptgpr6F_xjAC6(~TLj#*ewiHWCD_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jgmDd%EKc;p w+KsVi?D}qDSkO*B!5Mb*xG|_(S5o&00;m8KmY&$000000RR900000000000000000RR6000000019(y XKrD1b#i5M015%()D=(>(T2L(qY0=?N-W|y2ahx +Wo=;q1pxveS0}9Zh)e@_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jp9m~TI>-W|y2ahx 3nF|Vuawki#7NH?S|Q-Q!u2{b0tIPiVPjm(ZiUQ7;QU9z@vLsQUy3b9HcVYybrT0cSFYzzA^b -6`Drj_fC5M7<0km5x1u)VS{2*yf9yYl?p>|ZggdCbW&wz1OxyEb7N>_ZD9Zf0Rm*i)d@|xKsr716mTQm -aB}ROZ@Dgs2ia_2=g^?i+KiM^)7t~9tEf?*r}jS36zkMYeK9}${s8)2BzjZ?kPra}XJu|>b7^w`1pxwN -#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%Oul2rNlD$O59e#ogQsB77jPl+h5j^*S;F +6`Drj_fC5M7<0km5x1u)VS{2*yf9yYl?p>|ZggdCbW&wz1OxyEb7N>_ZD9Zf0RkXbC#?5~OapN(_Fs6G +vFQy{P|gRa2*}s1Y~I%9#i^81)7t~9tEf?*r}jS36zkMYeK9}${s8)2BzjZ?kPra}XJu|>b7^w`1pxve +S0}9Zh)e@2rNlD$O59e#ogQsB77jPl+h5j^*S;F 1!-nsV`TsZ0RcP8z<~n@;VY|KA!vt$qMEp^75#kD_Tqj3WXX=Y(#Wl3#tYybrT0anNlc)Z3! -7CPHT_+Dq|&?jn_(4)LjFAF^$MA+G=`wK&FZggdCbW>?(a|Hna3Ib%r)d@|xKsr716mTQmaB}ROZ@Dgs -2ia_2=g^?i+Kjg7fQB3>bs~EXcCXx(drQcb3B`Fx$)^%va$Ar)C7b~v#}{qTDnK1gUZ=~4IPtBJuMnKC +7CPHT_+Dq|&?jn_(4)LjFAF^$MA+G=`wK&FZggdCbW>?(a|Hna3IZTkC#?5~OapN(_Fs6GvFQy{P|gRa +2*}s1Y~I%9#i_RFfQB3>bs~EXcCXx(drQcb3B`Fx$)^%va$Ar)C7b~v#}{qTDnK1gUZ=~4IPtBJuMnKC WEcQ$kD_ZvQg;gh000000000A000000000EMR;^&ZgXjGZb@cgV`T;j2yJg~GYywm# VTK~nd#>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0000000000{{R30000002WM<= Vqt7^015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+p_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jHo-KZ`k;Xmr`<4sJYKN!!u{G5u+^j1 lf!PF4>GEG0000000000{{R30000003t@9}X=iS2Wo~qH015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7 -Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pGEG0000000000{{R30000002XbX(Wo2!1 +Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+p_lQgbaV_>=c$Ts04O39g2dD_h +*R5>c*5<{jHo-KZ`k;Xmr`<4sJYKN!!u{G5u+^j1lf!PF4>GEG0000000000{{R30000002XbX(Wo2!1 00{y`>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pa{vhfMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r 8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0000000000{{R300000024!+`Z*p@02?9mxqhH(h @@ -193,10 +193,10 @@ H~4Y@00000000300000000009c42H~ZewX>a{vhfMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r 1_*6$WNBt;WpV+O9PeeuXILaAA3^JIKdZ3ic!M@6PJV67bl-3#Cg!RLZDn*}WMOn+00{y`>Z4!V_T!KN I`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pa{vhfMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{ AMw{vgzX#P!9p!}0yp?_0000000000{{R300000024!+`Z*p@02?9mxqhH(hD`aAk5~bZKvH00aU61a5C`WdHyG0R(ezZDjxj0RlzpqhH(hC`}q*r35LOoBKkGaY9#cS7Qj{WgyAGcS>>g~&^g7bS0}9Zh)e@p#+${pKVqYC33O>~Wpi|4ZEyepNC<6ZbYWy+bYTDq0lk5UVp0y6#Opn49V(cQc;WdI2QadI6-(bd|-i#!&GYaF>qoh8ar dV?G00{v&KD$)QXhhr5^*YH=BF-=c yOsxg-v9sr000000RI300000000w1pa&K~T00{xZXXT7NJOW`Spw3o_*cmz+=1%_1gm*5-D79nn{HtC7 -00000000300000000009WMy_`Y;SO7asp(;)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+Kjg7fQB3> +00000000300000000009WMy_`Y;SO7asnV%C#?5~OapN(_Fs6GvFQy{P|gRa2*}s1Y~I%9#i_RFfQB3> bs~EXcCXx(drQcb3B`Fx$)^%va$Ar)C7cFHZE$Q!WCZ~L2LJ#-AOHhPX>#x3$o4Af`kVHyQ&~TYC -SRqgV00000000300000000008b7N>_ZDDj_00{zQ#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OtU +SRqgV00000000300000000008b7N>_ZDDj_00{yhS0}9Zh)e@ite$I%(jAWg00000000300000000006X=!b6Y;yn!0fbj(2M`|< m3T|4oDcSEr%ah$$XqR+hQ$77qvA$o%>V!Z000000RI300000001I<Z4!V_T!KNI`QJ|h6;Zj @@ -245,26 +245,26 @@ D$lsiICW4a8e$Z2e6I7`3evG=Yh^sO0000000000{{R30000001$23EWpe^W>Z4!V_T!KNI`QJ|h6;Zj lr&gK9B00000 0096000000000VeX=iR>bairNa{vkf;?xyT5z&Ua+M@}mOiDpYxh>^^GknUxTJ!XL#OUcE0frb5ENEw7 &f?o%+)B!ZpG}K!%4G?I4vp$|ttu*CMF0Q*000000RI300000000>QQWNBt;WpV=p2w`G#baG*1bN~o% -c4cyMX=G&q1!ie(VQl{xPGN0jWJYOaY-B-mb7^O8ZDnqBRC#b^1_J_VWCCQw)d@|xKsr716mTQmaB}RO -Z@Dgs2ia_2=g^?i+Kh+(;$>KfZ0H=mhJ>?uVpC#?5~OapN(_Fs6GvFQy{ +P|gRa2*}s1Y~I%9#i@t>;$>KfZ0H=mhJ>?uVC`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_2y$g}WpZ|9WCD5v 9p7nv%krpqNFdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmWOW`w +VQpn(MrmbiWJP#%Wo~n6Z*Ek1aAgJq0%>FdAXg`>_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jWOW`w sTH9-LlJ`2|Ay5Z(?oEikl{+~pis;@Q*TJ#1a4t%WdcR&qhH(he1kloHngE|MP08BSqsWn@NaWo%?eY;R&=Y*Tb$ -bY)a|aAgJq0%>FdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilm)$WoGNrFdAXg`>_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{j)$WoGNre1kloHngE|MP05>8=lWn@NaWo%?kWprUwd2nS00|IGe0%XM12~D{`Iz96g -a3kGta_pUNxh{zZ*=%3u(4f-VjCJHq_}|Wp0vpvv$c&#PW69R$ltr%da5t5w^x+8!q6BVXZDj&Q>Z4!V +1=xWxVN?HcT9qDk5m#O{2>e1kloHngE|MP05>8=lWn@NaWo%?kWprUwd2nS00|IGe0w7l>toMja192_( +UwD?W=?zm*&IhOn$k(lG-qz;DsdeN{_}|Wp0vpvv$c&#PW69R$ltr%da5t5w^x+8!q6BVXZDj&Q>Z4!V _T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pFdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWl -pwilmG*S<)6P6lYy(#<=BR_>s@(?%#f7ArN-=Rj?7Ns(11a4t%WdcR&qhH(hFdAXg`>_lQgbaV_>=c$Ts04O39g2dD_h*R5>c +*5<{jG*S<)6P6lYy(#<=BR_>s@(?%#f7ArN-=Rj?7Ns(11a4t%WdcR&qhH(he1kloHngE|MP06;5GoWn@NaWo%?t -VQgh?V|i40aAgJq0%>FdWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmM(yUq2ps*m=2xUDT;RqC +VQgh?V|i40aAgJq0%>FdAXg`>_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jM(yUq2ps*m=2xUDT;RqC gn#@WzFu~@adfH5^@&-|1a4t%WdcR&qhH(he1kloHngE|MP04o+chWn@-ia%o|1bagle0|IGe00035ZeeX@0!8Yh @@ -284,19 +284,19 @@ VQ>Wj015$yz}|oy`cC#6Uw2{wE+Sw~);*uMH+9Bf@aCY-RuiZDn*}0S0GmZ(?C=0tIh(Ze?Tx 2XWo~161PWnub7^O8ZDnqB1qWwkZe??6a|Q}@a$#@6CZU+fvcywiMb7^mG2nl6)V`Xr3X>V=` 3R87(aBO95Wo~o^1PNnrZggdCbV+0Z2AHk4+Bm{3x%H=p>4!*u&n~Wpi|4 -ZEyepNC#tbWnpx0asp(;)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+Kjg7fQB3>bs~EXcCXx(drQcb +ZEyepNC#tbWnpx0asnV%C#?5~OapN(_Fs6GvFQy{P|gRa2*}s1Y~I%9#i_RFfQB3>bs~EXcCXx(drQcb 3B`Fx$)^%va$Ar)C7cUkZfdKHyBH|__hx_vscRWAu^w2r{b^x;wDWyGXd29 kG60)seH8)H{-R`;$q)jqasX>@6CZb@cgV`T;j 2yJg~GYywm#VTK~nd#>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_ 0000000000{{R30000002WM<=Vqt7^015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1 -V6JV*{3!yZ{M3XW@z+p_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jHo-KZ `k;Xmr`<4sJYKN!!u{G5u+^j1lf!PF4>GEG0000000000{{R300000025D|^b#!w83IavyqhH(ha{vhfMe3tp+xFv-0Xp&G ?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0000000000{{R30 0000024!+`Z*p@02?9mxqhH(huJC38-{*D7fZ(%hZo23R4S;p`Q9JBQllDyoR%LQdZvz4Xb}#?}b}<1BS7~%^Wpi^vb#7#AWd;HY -aCKr=X>@L7b8`Y@#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OuwwrKJIUBJXnP(l%Y$cDDuY1Bm# +aCKr=X>@L7b8`Y9S0}9Zh)e@zVQyn+Z*pa1LUnFrY-Mu+hzwODL;*@eYE_8FVm19wjO(ZbIvDI)B0PALl`~a8 -----END STRICT TYPE LIB----- diff --git a/stl/RGBStd@0.11.0.stl b/stl/RGBStd@0.11.0.stl index 35a16aa59df5bb9522892beb3d1ff25cf8b2a533..aa9bc8cd62d4d4adf1cd9f0232c7acd89251db46 100644 GIT binary patch delta 1746 zcmdlpnQ_l#MkBT$cc2_U!0N zPM|vH{M_8klF19S6((x%sD}w(yMCp;cxLhXn8`ZbhM&zU=g9AO=rCBr!eF)Z^g$0c zrvT^tqSVQE6%^Q59dk;_a$Q8hVF-G#715=`tS zY?`5VFPk>{+=5jJj*^##I;*4UgRtmp=> z!sM;C>j^7#m2oM{$YQn~mni|2$X1=xv3sQ?G-&IgBV0FwX4f9Poa+T9} zr-PO4XORNsy9GsW=H~Cz>tw%~6aW0ef=jo0IDuw3=jY~TmQ21VqcHI_ullmcO#%AN zhKCofZ9BA5aL*m{``t}^@>5UCbt$(8%D=n7<`m$ZUz9pIK~rJl4_#>mLh2{G%4jGM za>gVLOYs?D3v4`JNdR5&*px;9yY>8 z1N}BR+BAT$LST??er@`mh(G`tDP_@0*vO0W3Y+g+oF~G_b5`dF8@I>$0%1jKY)%qZ zbc0u6@>bjRgcZ7SDNJ5sw}zm?%?0-NSO}_`3`%HyE`3Acq{VdF?mjo@T6Ut5H6 R@^OzA!p5HmX4`I0LjaTOMuPwV diff --git a/stl/RGBStd@0.11.0.sty b/stl/RGBStd@0.11.0.sty index d94c5406..25c3be31 100644 --- a/stl/RGBStd@0.11.0.sty +++ b/stl/RGBStd@0.11.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:xjwnXqkB-dTDlmmW-QIpkDHJ-$!ERsTT-Tdsz4MM-7JIQTT8#jessica-tropic-song + Id: stl:JhUC5JgH-Kwps4cO-ZNUklUj-UP6boFp-OY!18Kx-xOSJaVQ#hair-magnum-helena Name: RGBStd Version: 0.11.0 Description: RGB standard library @@ -11,32 +11,7 @@ @context typelib RGBStd -import StrictTypes#century-comrade-chess - use VariantName#theory-austin-before - use FieldName#present-flute-herman - use Primitive#deliver-arrow-boxer - use TySemId#popcorn-super-young - use FieldSemId#spiral-road-marco - use TypeName#edgar-carol-mystery - use UnnamedFieldsSemId#freedom-degree-gregory - use SemId#logic-absorb-hilton - use Variant#humor-regard-promise - use Sizing#courage-alien-salon - use NamedFieldsSemId#solar-salad-smoke - use EnumVariants#dispute-natasha-vega - use VariantInfoSemId#museum-edward-mirror - use UnionVariantsSemId#santana-address-pepper - use TypeSystem#adrian-boris-sponsor - -import AluVM#congo-archive-folio - use Lib#gate-biology-optimal - use LibSite#ultra-grace-message - use IsaName#taboo-olympic-cloud - use LibId#germany-culture-olivia - use IsaSeg#size-shake-olga - use LibSeg#lemon-philips-horse - -import RGBCommit#tuna-safari-design +import RGBCommit#harvest-person-orion use ExtensionSchema#active-eddie-empty use BundleId#carmen-farmer-diesel use AttachState#lady-japan-fiesta @@ -106,15 +81,24 @@ import RGBCommit#tuna-safari-design use RevealedData#olivia-copper-stamp use AssignRevealedValueBlindSealTxid#photo-jump-silicon -import CommitVerify#miller-pancake-elastic - use MerkleHash#horse-popcorn-bundle - use MerkleProof#price-aloha-grid - use ReservedBytes1#origin-roger-relax - use ReservedBytes2#florida-libra-circus - use ReservedBytes4#young-goblin-academy - use ReservedBytes8#rudolf-tape-adrian +import StrictTypes#century-comrade-chess + use VariantName#theory-austin-before + use FieldName#present-flute-herman + use Primitive#deliver-arrow-boxer + use TySemId#popcorn-super-young + use FieldSemId#spiral-road-marco + use TypeName#edgar-carol-mystery + use UnnamedFieldsSemId#freedom-degree-gregory + use SemId#logic-absorb-hilton + use Variant#humor-regard-promise + use Sizing#courage-alien-salon + use NamedFieldsSemId#solar-salad-smoke + use EnumVariants#dispute-natasha-vega + use VariantInfoSemId#museum-edward-mirror + use UnionVariantsSemId#santana-address-pepper + use TypeSystem#adrian-boris-sponsor -import BPCore#totem-holiday-helena +import BPCore#austin-story-retro use TapretNodePartner#roger-member-educate use TapretProof#marco-border-sample use TapretPathProof#kiwi-mirror-paris @@ -126,6 +110,22 @@ import BPCore#totem-holiday-helena use BlindSealTxid#media-judge-anita use TxPtr#italian-july-eddie +import AluVM#congo-archive-folio + use Lib#gate-biology-optimal + use LibSite#ultra-grace-message + use IsaName#taboo-olympic-cloud + use LibId#germany-culture-olivia + use IsaSeg#size-shake-olga + use LibSeg#lemon-philips-horse + +import CommitVerify#miller-pancake-elastic + use MerkleHash#horse-popcorn-bundle + use MerkleProof#price-aloha-grid + use ReservedBytes1#origin-roger-relax + use ReservedBytes2#florida-libra-circus + use ReservedBytes4#young-goblin-academy + use ReservedBytes8#rudolf-tape-adrian + import Std#ralph-blue-lucky use AlphaCaps#picnic-soprano-aurora use AsciiPrintable#ultra-sunset-format diff --git a/stl/RGBStorage@0.11.0.sta b/stl/RGBStorage@0.11.0.sta index f5b246ee..c82a2097 100644 --- a/stl/RGBStorage@0.11.0.sta +++ b/stl/RGBStorage@0.11.0.sta @@ -1,23 +1,23 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:7gJzyOSk-9kGbkdS-oKUNJvS-tk6p!Hw-!uhig0T-fkZgi4g#serial-cake-educate +Id: stl:t8loV$Vb-Z8hGMSi-pC9dCUe-Lpy$rm8-CGtTeJa-6ll2sCk#guest-infant-crash Name: RGBStorage Dependencies: + RGBCommit#harvest-person-orion, + RGBStd#hair-magnum-helena, StrictTypes#century-comrade-chess, + BPCore#austin-story-retro, AluVM#congo-archive-folio, - RGBCommit#tuna-safari-design, - RGBLogic#explain-marvin-bless, CommitVerify#miller-pancake-elastic, - BPCore#totem-holiday-helena, - RGBStd#jessica-tropic-song, + RGBLogic#rapid-baboon-satire, Std#ralph-blue-lucky, Bitcoin#signal-color-cipher -Check-SHA256: 876c77f50d4020dcdc728678cb56cdb533a64f4a26f9aed489e6e814bb8e9bcc +Check-SHA256: 74c61ee061f186917d794a71630d15cbd6c223f15ba043b722b7556123ee98ad -3Q|WxQ*>`~VP|CtMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r3sZD*X=8L$d2nTOVsJHoA?4$s -wuZp1Wc+9AOf`(TIbyKWjTy4WkGaM+1wm|eR!wBY)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdTO -M?ynyZEb0EZYmQ7jMFx!r5s@rJ-O*H1;I5Y*Jq{lbOS_Kbz-c)2vSEvOmAmtV|oJ}-)Viz@~C%8KNS}Z -0aQ3s^SOqbBwN-D{wl@OCJaMwZEb0ER%LQ&W_hMrvQRIBF~gy)hQg^4yxce6i-HaxmCGKABZpBR?$8E8 -P(yEWWyU-wUa0|fFy)$MkRq7_9H0IX8xu`8Y|n!X?2-^oKL%1qLQ`~P$}AplgPGkh3_fq3Q7_j=2#kPT +3Q|WxQ*>`~VP|CtAXg`>_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{j2~tNwLvL+uX>=wP0_2znD++Ak +!AD4^=04ZLvBczwX;cPMM?zC{WJT(uU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*$Y#2 +a%p39RC#b^b5;}9*VKn|nRBmPlPrrd^EP>$AHP6|FsuXsI;G3ONCrYsLvM0rVsJHoA?4$swuZp1Wc+9A +Of`(TIbyKWjTy4WkGaM+1wm|eR!w>X9p7nv%krpqN>ouDKt(|ZPQb$5eZ)a&^$}AplgPGkh3_fq3Q7_j=2#kPT _9!;lWR>~GYywm#15DT%6aZ|SrJerP1pIOD57`7Ol|-ogQ6Pjg~y>s-v>!^VNPLfWv4Jz0xkJm$nc4y @@ -25,12 +25,12 @@ MWR2J-cc#Q6SofWC)gp7L6!Sc3I$AQVo7AP4Jk3r!|EoW{Zi$060oMN(jLzPuNboiNpoRS WoOdj7+WWC1?EKi+6QrwlvP$nl8x-M691f9z+~t)>6ivgX<}1lX9hx0LvM0r4FCar2VDR_OBR)w8yCZ2 EylR&t_^>1Sz?kFbz0>alMxYAVQ_L~bWU$%Wl&*qbZ%vG1JyK;>qK>mX$cszrKCL=@F5H{a;)B(Tlt4r og*WC5Jh-!Y-wX@bW>$vY*ct@WDm98Wft0d6dj=*oo`t> -c$)o5X19O9`rXu=lIsRdWprq7WH>)!E^$-R$RUwD%Xb~0J!Ic@@+ehVE%-)5lom~G1rbzXaB^jIQfX&s -bV71rZewUhC#Wt^wA&hNfbvI8l{tqo-}{|djZ8YAkJtUQVz<=}LTqVnWK(5fY*ctqbaF>d&s@;xOg?z( -`#e5a?6_IYcQ>qF5t# -xf?-lV`y)3O=WUxY-K`hZ)0muaB^jIP;zf?W@s7fyw$T9tCzEwrAszt-P)%HZ|LbH=L2A=l(W4CP6|_H +W)s9yQf4Q+L?w(nXY|a%e*XOAC%4aD5B-6UFMfO2d=FG%aB^jIP+@dvP;zf?W-hl7CAn^87TS9h9ibha +Z&^Bcn*B*;w|~I;-PD|t>jq6_bZBp6I6q=8aZ}RBA(1@GcO9QSWZ!o3C{DWI)5Jeow&v$k6@5bjw%EMbM&T%L^glVtzy>c`nt +RvSTXV`y)3O=WUxY-K`hZ)0muaB^jIP;zf?W@s7fyw$T9tCzEwrAszt-P)%HZ|LbH=L2A=l(W4CP6|_H V{&D5Q)OXnu*Pw&hI`xNV4B0;>oUbhHyi-Y#=22)QEgSwgbZe&wsVQf@*X=JhGI5`vwIKJ?2 8qdBQV5M*2;q-lY2q<~K(fZR6A>9R3cu;h52SRCdV{d706aWDkZG|bw_S!^E6;6$ujJ=)@jfnzUJFt-< #ywK79)|@}WpPe#3K@{sQ}POxW*-wf^&?6pkN!)@-3ce88{`DNj-p1Y1XOrQZXx47L&d6G@+l`%qd385 @@ -116,20 +116,20 @@ KDgmdc1Y|2T5mrLR$**qZew{#W?^GxKDS8EHu@2+7MVFP1hs6^$We8|k3le2=(%KZsrQgo3qfvfZ**aF X>V?GOR30+snp{uYWb)9vpEdM5jV}jv>9vwnX#InoRj)93qf;pX=iRpW?^GxOmsqKkxP5xCLpf?kur-g (F6&@HI9dWN1yNftOldQ1y*HpPH$F+rJCAYw97+KWFy8eZUu~dV(l5N%b&~h(10yyF^CmTVQpn(Mrmbi WL9BpWo~16RC#b^R>%){yv9NnI@?D0UT5ggCu*0_qr6cs3q2l0*x9K221#vjY)NET_7Pp|Zd*4POSky8 -4?DA0%Jd;JpJb=vumIvFO*=CPQ+04~Y*Te&UNH8E>xBrIwS50cCx~Y4>vpbO6eBrP2Wxp8;c>|H3sYrb -Y*%S?Ze??GU_W_(!uc?s(BakzdJ7?EF9^9Gyf?ad??x_c(9*_N98Yz0aCLM+b8~5DZf#|5bW&w@WnpY( -WJFFkgU`2UB%$aBN9rX=%!lt4v-5=I26&L{nTGW3do8V16r+p^9tR;mq;f9#3_2aCLM+ -b8~5DZf#|5bW&w@WnpY(WI=RvVPj}%#AUTvyg$3{N++IppJQl5+tKwp$xtHBFa^7o2YcTaPGN0jWJYOa -Y-B}vbY*UHX>V>+d2nTFC(1LJY0Wqjnq=?-uFQU?YI{u_&s!j~X7+MC!AG3V -Hn6J~&pv~A7-khwT~%sgOe`@BM`dnhb7^x)W?^GxgjZ$<5FZnjcuT6B5B6)POqpHCTrHl4#QtZa;zni7 -2}x#QV`WKgaBPMc5G-hCV9w&(UffE`hM!G~aLQ!~gAR@AcC9KZUquT;Z*FvDZgf*=XLE+Y-hdqXPWBsL -cVYo9B4AF|J)gHXb;e-i?Yrhg(m4rJb#QQONpxjxlpOD6#%EY0CLclTa6hZC<#>ZODNcTE%yi#yB_`&o -2u*KfX=Z6cbOl5XuY`uYqVp0y6#Opn49V(cQFkgU`2UB%$aBN9rX=%!lt4v-5=I26&L{nTGW3do8 +V16r+p^9tR;mq;f9#3_2aCLM+b8~5DZf#|5bW&w@WnpY(WI=RvVPj}%#AUTvyg$3{N++IppJQl5+tKwp +$xtHBFa^7o2YcTaPGN0jWJYOaY-B}vbY*UHX>V>+d2nTMaves|)!M|1JQjy*9JxrHCCXBK3Y-~_ZzF<= +1A>JaPGN0jWJYOaY-C4lZ(?C=Q*>c;WmI`^Wp(W({yb2RgQ&qroX$3|s~68cgLoKb6;WMPYGO<*F$_m# +Ze??6b4g}lV`X?XAL+Ysh`sOZo#5Z(1rNy0kurbdTRL{_?asbjCtV3aZewU~a#Lk=gjZ$<5FZnjcuT6B +5B6)POqpHCTrHl4#QtZa;zni72}x#QV`WKgaBPMc5G-hCV9w&(UffE`hM!G~aLQ!~gAR@AcC9KZUquT; +Z*FvDZgf*=XLE+Y-hdqXPWBsLcVYo9B4AF|J)gHXb;e-i?Yrhg(m4rJb#QQONpxjxlpOD6#%EY0CLclT +a6hZC<#>ZODNcTE%yi#yB_`&o2u*KfX=Z6cbOl5Xu +Y`uYqVp0y6#Opn49V(cQE2s&92Kh8W}@zf2sFIAPZAvVQg1vbZ%vHbIJ(jke?j1 l!xqXd>q7+-P0pRHy9#PwI0NEy%g(UCHeUkYj{YR7-159lq i%V@}#Ze4JZgp)|VRC6;+#Z*Ep$a%o|1baPW>ZAoPPfv$so3kRF1 PV2}fOp_vjQ6FdFHId|V -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 +H4o{!1*GOa*TS*HtoMja192_(UwD?W +=?zm*&IhOn$k(lG-qz;DsWP5cQ3m-<6)UHjqig^*m4co5us7ukl*0UQzs7w8g#Z8m000000RR90{{R30 +00nGmZE17>00Rh3Wo=1rWMy~;1r2X-LUnFrY-LGqWMy~&3IZTkC#?5~OapN(_Fs6GvFQy{P|gRa2*}s1 +Y~I%9#i^CZ=6W7=VqesjRYGc!>wZFzp>JB4@xD;^wu&SY_r(GrS0}9Zh)e@g)RqK0VQ|Mwn6X+ +txo3vSYd;;z)HQ~0$c(hS0}9Zh)e@2rNlD$O59e#ogQsB77jP +l+h5j^*S;D0000000030|Nj600000IVs&n0Y-LwzbZ%vHb4hMwWq1Gz0w7l>toMja192_( +UwD?W=?zm*&IhOn$k(lG-qz;DsRMhHwLKbzE(ciwC3nrXLGTEzPUiqvVS}~6O12rNlD$O59e #ogQsB77jPl+h5j^*S;EEYxz&xd)D|X2*0_E|OYH;h*YvvIyS{G&S`ex{XQ}0000000000 -{{R30000004RmF4ZE0>{Y)NipWq1Gz0%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-VjN6J@8iEuM -btv-qj6g$b#7A9pc!|f`I$jaRzSe2A1ON#FWW?18O}RiiJ@XWBBi(Rv?4579E{O-(Y+vWlpwilmlMuXs +{{R30000004RmF4ZE0>{Y)NipWq1Gz0w7l>toMja192_(UwD?W=?zm*&IhOn$k(lG-qz;DsoRQL8iEuM +btv-qj6g$b#7A9pc!|f`I$jaRzSe2A1ON#FAXg`>_lQgbaV_>=c$Ts04O39g2dD_h*R5>c*5<{jlMuXs u{2tXFT+?;?hj39&>gq>HOrf1lB-q;n)I5N0000000000{{R30000000000000000|Ns90000002u)>e -Q*>c-Xa)@kb7N>_ZDDj_015(R#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OuaQq$W5tE;F{pQrXd -&=l*`O?@#x{Qdy?T_k!`1dtE{#ylrpsR4B`<(g%XBAEjmpZ*aW6HPa4&w~u?k`PTl(swU)=eHZcWUx8U -##PM;a30K-=Jl8VtAf?Zi=Hx60000000000{{R300000025DwtV`Xyy3IfJFCtj%mbui_cWsoA7100|J -5gQXtH*C*?4D6B+O+P!zz<~n@;VY|KA!vt$qMEp^75#kD_Tqj3VpJSSeM0d+9tnq`n8nFAc3 -{t+7!O*d@MgADAF5KTWh#~MC<5IE1bzMOP@>#x3$o4Af`kVHyQ&~TYCSRqgV00000000300000000007 -XJu|>b7gY?3Ib%r)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KitFEJ-@Z0;0Ob-P{Wzd?2rs)M&&= -&l*}G;Jw22Ix+%e#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OvdvgUTbnZZteO3IOg0+3WD-We)T -m9OC!w7#?l6>4!*u&nOG#EL&$!Mwbxg)RqK0VQ|M -wn6X+txo3vSYd;;z)HQ~0$c)Q#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%Ou#jhE2@R4ADY@XOb3 -WHJm&VktwD1&R~J8Qi15W{8Ub0000000030|Ns900000AWq5RDZgXjGZgT(%0%XM12~D{`Iz96ga3kGt -a_pUNxh{zZ*=%3u(4f-VjFrgddLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#R6o+)d@|xKsr716mTQm -aB}ROZ@Dgs2ia_2=g^?i+Kf}D^XdU9;lkvmMR*4bh)jz;q`~Q5Z+&x=I0QQSl+6GD0000000960|Nj60 -000ShX>@L7b8}^L015(R#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%OuPYgi@C#*klFTE}3hP#3Wm -ki}o*nL&Ed10e7tM;q}1#ylrpsR4B`<(g%XBAEjmpZ*aW6HPa4&w~u?k`PTlUNH8E>xBrIwS50cCx~Y4 ->vpbO6eBrP2Wxp8;c>|H0000000000|NsC0000003t@D0VPj}*Wo~qH015(R#MKE+xj;HS^AvC+-Eea3 -oo~4=i3iziU+2)E(%OuKaSf9!PV~dK2uo>;u!nFdemP_$e?^hl+JkM;eY!XR2mk;;0000000000|Ns90 -000000000000000|Nj60000003v*>-a%FT=WnpY{00{zQ#MKE+xj;HS^AvC+-Eea3oo~4=i3iziU+2)E -(%OuVyTa&4noi_R;$3lnz4{Zl)X|Z&ZIQtMA_g1big7gn0000000030|Nj600000Aba`-PQ+acAWo-gQ +Q*>c-Xa)@kb7N>_ZDDj_015&iS0}9Zh)e@H4o{!1*GOa*TS*HAD4^=04ZLvBczwX;eGPz<~n@;VY|KA!vt$qMEp^75#kD_Tqj3Tz6$0d#2P+C};lr6VNhMM> +59zuEq~<=?!m-5UiD^_h#~MC<5IE1bzMOP@>#x3$o4Af`kVHyQ&~TYCSRqgV00000000300000000007 +XJu|>b7gY?3IZTkC#?5~OapN(_Fs6GvFQy{P|gRa2*}s1Y~I%9#i^eNEJ-@Z0;0Ob-P{Wzd?2rs)M&&= +&l*}G;Jw22Ix+$vS0}9Zh)e@H4o{!1*GOa*TS*H +4!*u&n59zuEq~<=? +!m-5UiD^`0J=2M>OG#EL&$!Mwbxg)RqK0VQ|M +wn6X+txo3vSYd;;z)HQ~0$c(hS0}9Zh)e@toMja192_(UwD?W +=?zm*&IhOn$k(lG-qz;Dsg=m)dLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#R4E#C#?5~OapN(_Fs6G +vFQy{P|gRa2*}s1Y~I%9#i>)L^XdU9;lkvmMR*4bh)jz;q`~Q5Z+&x=I0QQSl+6GD0000000960|Nj60 +000ShX>@L7b8}^L015&iS0}9Zh)e@H4o{!1*GOa*TS*H;u!nFdemP_$e?^hl+JkM;eY!XR2mk;;0000000000|Ns90 +000000000000000|Nj60000003v*>-a%FT=WnpY{00{yhS0}9Zh)e@Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HLtfv$so3kRF1PV2}fOp_vjQ6FdFHId|toMja192_(UwD?W=?zm*&IhOn$k(lG-qz;DskZ2Vh8!q$B6|*YuiTY;OURW8 +#d%1{rxIXtTaY^?oB}2l0_2znD++Ak!AD4^=04ZLvBczwX;h-%S=7<6%^jtx5=^cXz--x^ 3Rg~O2_Ny!Q1}E;1fT!_000000096000000000DRX<~B#3IbwqHGd)HR2XhQO_4{AcS-HH^7AVzASV -8M4NYxyCjU1gEwF5PXV6FZDLo1#Vec_~kix7WfVQ#Sd|CM9$^_0000000030{{R3000004b7^OD015)e -JSSeM0d+9tnq`n8nFAc3{t+7!O*d@MgADAF5KTYg)D=(>(T2L(qY0=?N -#ylrpsR4B`<(g%XBAEjmpZ*aW6HPa4&w~u?k`PTlh8PemXlG!~;@e)_O3H?xO^a~KWeI~0jp}x-Dk@(^ -0000000000|Nj60000002u)>eQ*>c;Wd;HXcWHEPWpi_7a{vkgWW?18O}RiiJ@XWBBi(Rv?4579E{O-( -Y+vWlpwilmiECIT&Bl;lSX#$ms8AQN7m&qYg8B7tjqC|5&qz6Q-tazCB3Um~mr!r)9aR2}S000000RR90{{R30010DnZgg^C -V{~%>3Ib%r)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KitFEJ-@Z0;0Ob-P{Wzd?2rs)M&&=&l*}G +8M4NYxyCjU1gEwF5PXV6FZDLo1#Vec_~kix7WfVQ#Sd|CM9$^_0000000030{{R3000004b7^OD015&o +6$0d#2P+C};lr6VNhMM>59zuEq~<=?!m-5UiD^{g)D=(>(T2L(qY0=?N +CKUqYmH4o{!1*GOa*TS*HeQ*>c;Wd;HXcWHEPWpi_7a{vkgAXg`>_lQgbaV_>=c$Ts04O39g2dD_h +*R5>c*5<{jiECIT&Bl;lSX#$ms8AQN7m&qYg8B7tjqC|5&qz6Q-tazCB3Um~mr!r)9aR2}S000000RR90{{R30010DnZgg^C +V{~%>3IZTkC#?5~OapN(_Fs6GvFQy{P|gRa2*}s1Y~I%9#i^eNEJ-@Z0;0Ob-P{Wzd?2rs)M&&=&l*}G ;Jw22Ix+!vno`+&e1Pj6a?JDUs8A->-qfH?0iRw!WuNN`7KQr&0000000030000000000 -----END STRICT TYPE LIB----- diff --git a/stl/RGBStorage@0.11.0.stl b/stl/RGBStorage@0.11.0.stl index 58718526537f85663aef62e333584bc0773adf8d..b017c40809524726a00a8f1574b21f1f0d4d350b 100644 GIT binary patch delta 2118 zcmeyK`aLz4E6Cj`xFo+QF+G)2AzXdU_YNQCLfvoi71K7po6crhJGX!XXt+;)dS>!w9Y$8B$$8A1 z6;d1yud4Gu@c+bxzlTarho5%6uw?D6T6LoyrqIs!x?Zy<2Qtelq$EV$dwNcNw^qD^ zLCyMOUtenU$IR>bJ~`$8yI03=hK6l+WSK2GnMX}wvWC?2$(GXTS{0`9FLxJq?0x@c z?t}YJSou$!ooH15INGZ0?b~zvV$@?f9rKbi@{58~OExc%p2?_sJU-JhOhuP-+oqk1 zvx8qn-n)15?7GtyQj*Sv^(()-DR2j;CgyB5lD)*LKq#yy+h}P{_EnZ7tWZ%{L79P* ziAV$4C;wE|C2XjhiVk5#`5FpZZ0R}qNr^cOT!bA^C#*2}kBYSdp~N$}LQY|FxvDH- zgp z@-^J3W|W@7WHU`7yZ}rklc#Gs5w`cIrZQngHd^6?6)h741_r@omMW_-SwvfkaGd*T zD-u@JuWe1(VZg8;B9;d@t9J$KryVJqS_OnQV^4)@>H*@oM z>UFZ;%!z+~VZo(aJ)A&o&iT2ynI(Bz!fZX4&6Y2fNfff(`O<*(psCvR^rc@)m|Y@D zlh*9#0IKxKPtQ!Acum)DS>&bw{bs|%3)i+CS}C~aj`{uWCO-M8r{%ho+XLm_U0`zx zaLzAEJ!YdGx012c;OVT?2}(1WW#<1Alos|i&pF@B^JbEOuRR;s(J7mC7+IMtM1||* znU(rKckB2kYi-@CS-ha}R8g~9*}mF-n?Tjc9x{%3$r<@YzNtmoIjK%L`N`QKi3LTe zC6jfScPPY6d*E2{Rzing;Ojr*{Ap1?+~Wnbrm{2rUGKIiLb+_`W=EFUqB?N~-#T8m za?IFT^WRgwBkk?$vUM>c%9g?G*_AR63r~FE4o*$X2?vHnYH{)AJCf{-T3PC+jAvw? zwGf__@_}jHnY!g!)xI+4qZKx%eLG^XzG*2Z#8JUOXFQfl-&`U+lX0`9>}gg7LIFS7 zMoV+Dud*azg^I!o$_$)LL>kCG`KPijVMExYFdO9UQkmc9590Fp@bD()Fr~C z2b>C%pR21AHVvpyk#H2`Yq(L(C_RPAW|~BJ0hmfAPuFxJZ0}D^Wx|SVw89B1S|$h# z41&olRaRlLh_)2rIQP?5B&?`k+nTV$fMG#IEG3F6O!n51By4Akjxu3IlE9?>Tt}O* z ^ ..0xffffff RGBCommit , contractIndex {RGBCommit.ContractId -> ^ ..0xff ContractIndex} , terminalIndex {RGBCommit.XChainSecretSeal -> ^ ..0xffffff {RGBCommit.Opout ^ ..0xff}} -@mnemonic(ultra-sweden-limbo) +@mnemonic(level-open-morph) data MemStash : schemata {RGBCommit.SchemaId -> ^ ..0xff RGBStd.SchemaIfaces} , ifaces {RGBStd.IfaceId -> ^ ..0xff RGBStd.Iface} , geneses {RGBCommit.ContractId -> ^ ..0xff RGBCommit.Genesis} From 980792659f0c0edaf666496f0ba3d70d56bc6883 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Sat, 12 Oct 2024 15:13:27 +0200 Subject: [PATCH 4/5] containers: allow consignment to reveal multiple seals from terminals --- src/containers/consignment.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/containers/consignment.rs b/src/containers/consignment.rs index e49df199..045bc9c1 100644 --- a/src/containers/consignment.rs +++ b/src/containers/consignment.rs @@ -296,9 +296,7 @@ impl Consignment { for mut witness_bundle in self.bundles { for (bundle_id, secret) in &self.terminals { if let Some(seal) = f(*secret)? { - if witness_bundle.reveal_seal(*bundle_id, seal) { - break; - } + witness_bundle.reveal_seal(*bundle_id, seal); } } bundles.push(witness_bundle).ok(); From 92902cee618b8d0d382cba1a525fae8f9840977a Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Sat, 12 Oct 2024 18:55:57 +0200 Subject: [PATCH 5/5] persistence: fix MPC proof assignments in witness bundle consume --- src/persistence/stash.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/persistence/stash.rs b/src/persistence/stash.rs index f9434298..dd0d6abb 100644 --- a/src/persistence/stash.rs +++ b/src/persistence/stash.rs @@ -600,12 +600,12 @@ impl Stash

{ | ( Anchor { dbc_proof: DbcProof::Opret(opret), - mpc_proof: mpc_proof_tapret, + mpc_proof: mpc_proof_opret, .. }, Some(Anchor { dbc_proof: DbcProof::Tapret(tapret), - mpc_proof: mpc_proof_opret, + mpc_proof: mpc_proof_tapret, .. }), ) => AnchorSet::Double {