From 8267ce26b1edf905553a49e5dcc42d5f2f0df338 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Tue, 15 Oct 2024 22:53:42 +0200 Subject: [PATCH] operation: introduce StateData type --- src/operation/commit.rs | 7 +- src/operation/global.rs | 18 ++-- src/operation/mod.rs | 2 +- src/operation/state.rs | 45 +++++++-- src/stl.rs | 4 +- src/vm/contract.rs | 9 +- src/vm/op_contract.rs | 8 +- stl/AnchoredBundle.vesper | 6 +- stl/RGBCommit@0.1.0.sta | 205 +++++++++++++++++++------------------- stl/RGBCommit@0.1.0.stl | Bin 10207 -> 10264 bytes stl/RGBCommit@0.1.0.sty | 13 ++- stl/RGBLogic@0.1.0.sta | 26 ++--- stl/RGBLogic@0.1.0.stl | Bin 1659 -> 1659 bytes stl/RGBLogic@0.1.0.sty | 14 +-- stl/Transition.vesper | 6 +- 15 files changed, 200 insertions(+), 163 deletions(-) diff --git a/src/operation/commit.rs b/src/operation/commit.rs index 71327bed..d97262b0 100644 --- a/src/operation/commit.rs +++ b/src/operation/commit.rs @@ -25,7 +25,7 @@ use std::fmt::{Display, Formatter}; use std::str::FromStr; use std::{fmt, vec}; -use amplify::confinement::{Confined, MediumOrdMap, SmallBlob, U16 as U16MAX}; +use amplify::confinement::{Confined, MediumOrdMap, U16 as U16MAX}; use amplify::hex::{FromHex, ToHex}; use amplify::num::u256; use amplify::{hex, ByteArray, Bytes32, FromSliceError, Wrapper}; @@ -40,7 +40,8 @@ use crate::operation::state::StateCommitment; use crate::{ impl_serde_baid64, Assign, AssignmentType, Assignments, BundleId, ExposedSeal, Extension, ExtensionType, Ffv, Genesis, GlobalState, GlobalStateType, Operation, Redeemed, SchemaId, - SecretSeal, Transition, TransitionBundle, TransitionType, XChain, LIB_NAME_RGB_COMMIT, + SecretSeal, StateData, Transition, TransitionBundle, TransitionType, XChain, + LIB_NAME_RGB_COMMIT, }; /// Unique contract identifier equivalent to the contract genesis commitment @@ -385,7 +386,7 @@ impl MerkleLeaves for Assignments { #[derive(Clone, Eq, PartialEq, Hash, Debug)] pub struct GlobalCommitment { pub ty: GlobalStateType, - pub state: SmallBlob, + pub state: StateData, } impl CommitEncode for GlobalCommitment { diff --git a/src/operation/global.rs b/src/operation/global.rs index 647fb399..1d39db27 100644 --- a/src/operation/global.rs +++ b/src/operation/global.rs @@ -23,11 +23,11 @@ use std::collections::btree_map; use std::vec; -use amplify::confinement::{Confined, NonEmptyVec, SmallBlob, TinyOrdMap, U16 as U16MAX}; +use amplify::confinement::{Confined, NonEmptyVec, TinyOrdMap, U16 as U16MAX}; use amplify::{confinement, Wrapper}; use strict_encoding::StrictDumb; -use crate::{schema, LIB_NAME_RGB_COMMIT}; +use crate::{schema, StateData, LIB_NAME_RGB_COMMIT}; #[derive(Wrapper, WrapperMut, Clone, PartialEq, Eq, Hash, Debug, From)] #[wrapper(Deref)] @@ -39,19 +39,19 @@ use crate::{schema, LIB_NAME_RGB_COMMIT}; derive(Serialize, Deserialize), serde(crate = "serde_crate", transparent) )] -pub struct GlobalValues(NonEmptyVec); +pub struct GlobalValues(NonEmptyVec); impl StrictDumb for GlobalValues { - fn strict_dumb() -> Self { Self(NonEmptyVec::with(SmallBlob::strict_dumb())) } + fn strict_dumb() -> Self { Self(NonEmptyVec::with(StateData::strict_dumb())) } } impl GlobalValues { - pub fn with(state: SmallBlob) -> Self { GlobalValues(Confined::with(state)) } + pub fn with(state: impl Into) -> Self { GlobalValues(Confined::with(state.into())) } } impl IntoIterator for GlobalValues { - type Item = SmallBlob; - type IntoIter = vec::IntoIter; + type Item = StateData; + type IntoIter = vec::IntoIter; fn into_iter(self) -> Self::IntoIter { self.0.into_iter() } } @@ -72,7 +72,7 @@ impl GlobalState { pub fn add_state( &mut self, ty: schema::GlobalStateType, - state: SmallBlob, + state: StateData, ) -> Result<(), confinement::Error> { match self.0.get_mut(&ty) { Some(vec) => vec.push(state), @@ -83,7 +83,7 @@ impl GlobalState { pub fn extend_state( &mut self, ty: schema::GlobalStateType, - iter: impl IntoIterator, + iter: impl IntoIterator, ) -> Result<(), confinement::Error> { match self.0.get_mut(&ty) { Some(vec) => vec.extend(iter), diff --git a/src/operation/mod.rs b/src/operation/mod.rs index 3ffb43ce..881ab3d3 100644 --- a/src/operation/mod.rs +++ b/src/operation/mod.rs @@ -46,7 +46,7 @@ pub use seal::{ ExposedSeal, GenesisSeal, GraphSeal, OutputSeal, SecretSeal, TxoSeal, XGenesisSeal, XGraphSeal, XOutputSeal, }; -pub use state::{AttachId, State, StateCommitment}; +pub use state::{AttachId, State, StateCommitment, StateData}; pub use xchain::{ AltLayer1, AltLayer1Set, Impossible, Layer1, XChain, XChainParseError, XOutpoint, XCHAIN_BITCOIN_PREFIX, XCHAIN_LIQUID_PREFIX, diff --git a/src/operation/state.rs b/src/operation/state.rs index 72d1f3a3..da7cecd7 100644 --- a/src/operation/state.rs +++ b/src/operation/state.rs @@ -26,7 +26,7 @@ use std::fmt::{Display, Formatter}; use std::str::FromStr; use amplify::confinement::{SmallBlob, U16 as U16MAX}; -use amplify::{Bytes32, Wrapper}; +use amplify::{ByteArray, Bytes32, Wrapper}; use baid64::{Baid64ParseError, DisplayBaid64, FromBaid64Str}; use commit_verify::{CommitmentId, DigestExt, ReservedBytes, Sha256}; use strict_encoding::{StrictDeserialize, StrictSerialize, StrictType}; @@ -63,6 +63,30 @@ impl Display for AttachId { impl_serde_baid64!(AttachId); +#[derive(Wrapper, Clone, PartialOrd, Ord, Eq, PartialEq, Hash, Debug, From)] +#[wrapper(Deref, BorrowSlice, Index, RangeOps)] +#[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] +#[strict_type(lib = LIB_NAME_RGB_COMMIT)] +#[cfg_attr( + feature = "serde", + derive(Serialize, Deserialize), + serde(crate = "serde_crate", transparent) +)] +pub struct StateData(SmallBlob); + +impl StrictSerialize for StateData {} +impl StrictDeserialize for StateData {} + +impl AsRef<[u8]> for StateData { + fn as_ref(&self) -> &[u8] { self.0.as_slice() } +} + +impl StateData { + pub fn from_checked(vec: Vec) -> Self { Self(SmallBlob::from_checked(vec)) } + + pub fn as_slice(&self) -> &[u8] { self.0.as_slice() } +} + #[derive(Clone, PartialOrd, Ord, Eq, PartialEq, Hash, Debug)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB_COMMIT)] @@ -71,12 +95,19 @@ impl_serde_baid64!(AttachId); #[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "serde_crate"))] pub struct State { pub reserved: ReservedBytes<1>, - pub value: SmallBlob, + pub value: StateData, pub attach: Option, } -impl StrictSerialize for State {} -impl StrictDeserialize for State {} +impl From for State { + fn from(value: StateData) -> Self { + State { + reserved: default!(), + value, + attach: None, + } + } +} impl State { /// # Panics @@ -87,7 +118,8 @@ impl State { reserved: default!(), value: value .to_strict_serialized::() - .expect("unable to fit in the data"), + .expect("unable to fit in the data") + .into(), attach: None, } } @@ -100,7 +132,8 @@ impl State { reserved: default!(), value: value .to_strict_serialized::() - .expect("unable to fit in the data"), + .expect("unable to fit in the data") + .into(), attach: Some(attach), } } diff --git a/src/stl.rs b/src/stl.rs index 715ce926..2b719675 100644 --- a/src/stl.rs +++ b/src/stl.rs @@ -37,10 +37,10 @@ use crate::{ /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB_COMMIT: &str = - "stl:JepgtiGZ-TYqkSmV-vo6ysWP-gZZEU03-pVoHbyj-nR02608#aspect-shoe-garcia"; + "stl:r43G92Ru-4TQgKzY-eeZQr$e-k0DccV0-6d0mlAI-Dil$Hr4#printer-window-alpine"; /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB_LOGIC: &str = - "stl:nKQEKac1-dDxkN3M-dXhgnba-CkprxwT-So5aC5D-meYuULE#charm-chief-invite"; + "stl:51OgjzV6-F5XuTyt-FMJe4k6-opdtsQd-cptXuc4-FqM7npk#ohio-electra-dilemma"; fn _rgb_commit_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB_COMMIT), tiny_bset! { diff --git a/src/vm/contract.rs b/src/vm/contract.rs index 1d0d2b61..0e736d2e 100644 --- a/src/vm/contract.rs +++ b/src/vm/contract.rs @@ -28,7 +28,6 @@ use std::num::NonZeroU32; use std::rc::Rc; use amplify::confinement; -use amplify::confinement::SmallBlob; use amplify::num::u24; use bp::seals::txout::{CloseMethod, ExplicitSeal, VerifyError, Witness}; use bp::{dbc, Tx, Txid}; @@ -40,8 +39,8 @@ use strict_encoding::{StrictDecode, StrictDumb, StrictEncode}; use crate::{ AssignmentType, Assignments, AssignmentsRef, ContractId, ExposedSeal, Extension, ExtensionType, Genesis, GlobalState, GlobalStateType, GraphSeal, Impossible, Inputs, Layer1, Metadata, - OpFullType, OpId, OpType, Operation, State, Transition, TransitionType, TxoSeal, TypedAssigns, - Valencies, XChain, XOutpoint, XOutputSeal, LIB_NAME_RGB_LOGIC, + OpFullType, OpId, OpType, Operation, State, StateData, Transition, TransitionType, TxoSeal, + TypedAssigns, Valencies, XChain, XOutpoint, XOutputSeal, LIB_NAME_RGB_LOGIC, }; pub type XWitnessId = XChain; @@ -572,7 +571,7 @@ impl GlobalOrd { } pub trait GlobalStateIter { - type Data: Borrow; + type Data: Borrow; fn size(&mut self) -> u24; fn prev(&mut self) -> Option<(GlobalOrd, Self::Data)>; fn last(&mut self) -> Option<(GlobalOrd, Self::Data)>; @@ -633,7 +632,7 @@ impl GlobalContractState { /// Retrieves global state data located `depth` items back from the most /// recent global state value. Ensures that the global state ordering is /// consensus-based. - pub fn nth(&mut self, depth: u24) -> Option + '_> { + pub fn nth(&mut self, depth: u24) -> Option + '_> { if depth >= self.iter.size() { return None; } diff --git a/src/vm/op_contract.rs b/src/vm/op_contract.rs index ac5b431a..026be026 100644 --- a/src/vm/op_contract.rs +++ b/src/vm/op_contract.rs @@ -239,7 +239,7 @@ impl InstructionSet for ContractOp { else { fail!() }; - regs.set_s(*reg, Some(&state.value)); + regs.set_s(*reg, Some(state.value.as_inner())); } ContractOp::LdS(state_type, reg_32, reg) => { let Some(reg_32) = *regs.get_n(RegA::A16, *reg_32) else { @@ -255,7 +255,7 @@ impl InstructionSet for ContractOp { else { fail!() }; - regs.set_s(*reg, Some(state.value)); + regs.set_s(*reg, Some(state.value.into_inner())); } ContractOp::LdG(state_type, reg_8, reg_s) => { let Some(reg_32) = *regs.get_n(RegA::A8, *reg_8) else { @@ -271,7 +271,7 @@ impl InstructionSet for ContractOp { else { fail!() }; - regs.set_s(*reg_s, Some(state)); + regs.set_s(*reg_s, Some(state.as_inner())); } ContractOp::LdC(state_type, reg_32, reg_s) => { @@ -289,7 +289,7 @@ impl InstructionSet for ContractOp { let Some(state) = global.nth(index) else { fail!() }; - regs.set_s(*reg_s, Some(state.borrow())); + regs.set_s(*reg_s, Some(state.borrow().as_inner())); } ContractOp::LdM(type_id, reg) => { let Some(meta) = context.op_info.metadata.get(type_id) else { diff --git a/stl/AnchoredBundle.vesper b/stl/AnchoredBundle.vesper index dd10357e..7fb409de 100644 --- a/stl/AnchoredBundle.vesper +++ b/stl/AnchoredBundle.vesper @@ -37,7 +37,7 @@ TransitionBundle rec globals map len=0..MAX8 aka=GlobalState key is U16 aka=GlobalStateType value list len=1..MAX16 aka=GlobalValues - element bytes len=0..MAX16 + element bytes len=0..MAX16 aka=StateData inputs set len=0..MAX16 aka=Inputs Input rec prevOut rec Opout @@ -55,7 +55,7 @@ TransitionBundle rec liquid bytes len=32 wrapped aka=SecretSeal tag=1 state rec State reserved bytes len=1 aka=ReservedBytes1 - value bytes len=0..MAX16 + value bytes len=0..MAX16 aka=StateData some bytes len=32 option wrapped aka=AttachId tag=1 lock bytes len=2 aka=ReservedBytes2 revealed rec tag=1 @@ -76,7 +76,7 @@ TransitionBundle rec blinding is U64 state rec State reserved bytes len=1 aka=ReservedBytes1 - value bytes len=0..MAX16 + value bytes len=0..MAX16 aka=StateData some bytes len=32 option wrapped aka=AttachId tag=1 lock bytes len=2 aka=ReservedBytes2 valencies set len=0..MAX8 aka=Valencies diff --git a/stl/RGBCommit@0.1.0.sta b/stl/RGBCommit@0.1.0.sta index 345df8d2..1be40fd4 100644 --- a/stl/RGBCommit@0.1.0.sta +++ b/stl/RGBCommit@0.1.0.sta @@ -1,5 +1,5 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:JepgtiGZ-TYqkSmV-vo6ysWP-gZZEU03-pVoHbyj-nR02608#aspect-shoe-garcia +Id: stl:r43G92Ru-4TQgKzY-eeZQr$e-k0DccV0-6d0mlAI-Dil$Hr4#printer-window-alpine Name: RGBCommit Dependencies: StrictTypes#century-comrade-chess, @@ -8,7 +8,7 @@ Dependencies: CommitVerify#miller-pancake-elastic, Std#ralph-blue-lucky, Bitcoin#signal-color-cipher -Check-SHA256: 3eace4fa98ea2690b3f4e4e4e83ab1fe9e594e56fe3f5dd56985cd046009e306 +Check-SHA256: 9784117eff575534fd00f2c58a4b7e77f7295eb5152e4034fe3b50c9693a9fad 2~tNwLvL+uX>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI)Q*?4^V{}w`aAk8=6V}(%hjW>8 uUwNXi!t*yd7K}=K!`A`1OPgv%fUznLQq3*a%Ez0HGd)Hmb;*F>vukd; =m`ygb@x#_>`RmOO$0)3Z)}yry~#}iVEJ)s5j^%uEnQ9{n2s|9Fa^ps+HG#`XS5DMY;b5{PIYZeZ)9O} Xt{%a=RmHK6WZ%EWRm@*ULd%lgGoFTxUTU 76^nC$%1sKzB<;EQA|)S-x88IWKN#S$#@T&w`gPtRC#b^PGN0jYXqYdo~D%m7H6OD0<^0n_2##VWXRdj -y=DB@qgYOj1yf~hNn|kq2|;XhOksItaxnt|25f0@b!lV)3_)ykOksItaxqh7bOiwb2?5A!f_n>Eea4Xl +y=DB@qgYOj1yf~hNn|nr2|;XhOksItaxnt|25f0@b!lV)3_)ykOksItaxqh7bOiwb2?5A!f_n>Eea4Xl By!~KtpQ8M_qJyiO1VIUJ=H=)@ii_1#@&^bY%g~3BrR~ -dP~K#bR53&CVQNOgk^Sj)R>~DbkbeMR#2D(Y;R+00(t`--)Viz@~C%8KNS}Z0aQ3s^SOqbBwN-D{wl@O +Z*FF3WMyu2X<=*t1_K0hWnpXq+lpEmf)o&SDDwD>KtpQ8M_qJyiO1VIUJ=H=)@ii_1#@&^bY%ge?_#fa +>f2YbpqsWJ=H5;$3iFlwr`bMCi{X7L`pc*UY;R+00(t`--)Viz@~C%8KNS}Z0aQ3s^SOqbBwN-D{wl@O Cd;@jJLYKfb7gWS-+`&{Sr=ykNJ#YFTr_BQwWqKF0RaedWp-s@Y-MBs1_K0hWnpXqkGsO?N19ILP2yc~ -f4%w>xYW^+v~7{W03rq(;firJ1#@&^bY%g~3BrR~dP~K#bR53&CVQNOgk^Sj)R>~DbkbeMR#2D(Y;R+0 +f4%w>xYW^+v~7{W03rq(;firJ1#@&^bY%ge?_#fa>f2YbpqsWJ=H5;$3iFlwr`bMCi{X7L`pc*UY;R+0 0(t`--)Viz@~C%8KNS}Z0aQ3s^SOqbBwN-D{wl@OCd;@jJLYKfb7gWS-+`&{Sr=ykNJ#YFTr_BQwWqKF 0TV%Ub7^O8LTqVnWK(5fY*ct@WCQ{L3}bI@W@%()Zggp3YybuW1aoC!YysPfS{i~B5OpZ>_>4e9YQ#rf -ba;u!+d5tm#=h2RwFCuobYXO50nQ1+gIan^#j|uAzVaq}oP>mBc6Zd6qNjAyUB*^Wm;`KZV`~C>10COK +ba;u!+d5tm#=h2RwFCuobYXO50iy3>uXpO(SFxa*wjk!-PAm%ZmHVgJK1_?@eJc9Ps03_pV`~C>10COK earHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUFsxGg*8X!CPrawgw_sqk4BX8}k^^xj-FXm+)yumJ%92y$h1 -WnpY(WB>*O1aoC!YypA{4XEgn0epQk*PX+nL>xOm%pK>soMo}bYXO50nQ1+gIan^#j|uA -zVaq}oP>mBc6Zd6qNjAyUB*^Wm;`KZV`~C>10COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUFsxGg*8 +WnpY(WB>*O1aoC!YypA{4XEgn0epQk*PX+nL>xOm%pK>soMo}bYXO50iy3>uXpO(SFxa* +wjk!-PAm%ZmHVgJK1_?@eJc9Ps03_pV`~C>10COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUFsxGg*8 X!CPrawgw_sqk4BX8}k^^xj-FXm+)yumJ%ML349yXKrm}Zgf<6aAgGn0006RL349yXKrm}Zgg`(Y-w&} -Q)OXnRCrKyas>eZ3IT`y;$>KfZ0H=mhJ>?uV?R*<~YN(+)WXPrU6NVcJ -Re9K)?f*I|1rIW1&*8w7q6LB=zWLeZ3IT`y;$>KfZ0H=mhJ>?uVAsRK~ +st@E%Ar$n40xlXfv!=HI0000000030000000000OL349yXKrm}Zgg`(Y-w&}Q)OXnRCsA*1pxpG0f+wL +Wmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdAPU1yT{R3NT&J#qI*G?@;-zlsy+C*oqxc5$cZNpSS=3 000000093000000000ODb5bYX39002k^X>)URWpV;~10COKearHw @@ -53,8 +53,8 @@ $}AplgPGkh3_fq3Q7_j=2#kPT_9!;lWR>~GYywm#VTK~nd#>D+0ot2U6Id2jc94hrndMfL ayEe1ISdA&%p{mB1!VWk)e2*8Zgg^CV{}Pm0iOsgNjk^^qPoT1+zTRnAg`3vXv9d*8d@RXy~6c6G6imL ZewKt00<3bcywiMb7^mGRC#b^0c3R^La7y@JVOzJ)&GXo9MeQ_qmbcB?4VH0I#X{*-Uw}FbYWy+bYTJY -dQCW4e)%xftOSp9TD)g5B;KO;Krzd=y+`rt_<1!4XKZg`VQg~&6}XL#aWHw+iM6uthuRGMK#pr*4B`SU -165T3F&!H#3t@9}X=iS2Wo~qH0j?GxoKezxloIF_owDud_=c42H~ZewX>a{=9jW&m$tWDykZj`7#3_zANbB(SO{ shhGe=&H{tM@~ Wpi|4ZEyepNCs(hb9H5M0k-IXh8!q$B6|*YuiTY;OURW8#d%1{rxIXtTaY^?oCkDeb98QHbOOpO9&dx0 -7pM3Z=O*v*GCA9fL-<|HrZsA`NnJlR3~AEBGG%U@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_Du?5Y;;Uv d1Z2QF##l3QrKmH@SMtOBR5nML?B>%qbz^!%<&Wu0B;HjDvStiWprU=VRT^u^?FS>S$_F2)vN@Mb6UJ- -F(lri_dqerx4lR4>iBsz2WM<=Vqt7^0TsB7j&U$~)rqyT?}yq9{6LOtU<~2{Edy0m05KgKD+^(Bb7^O8 -ZDnqBa{;avAe>RsdgK|H>1&pp1|3-AXsbFp4x6E*tRilWSI!A`VQgh?V`*h`0o{dW0B>Pr5ftu@@z<*O +F(lri_dqerx4lR4>iBsz2WM<=Vqt7^0ZQACB>WS2JTsxo?J^nrEn#tWN`qbZIFMMoKp}H73kzX$b7^O8 +ZDnqBa{(Sg(`-FGi{|$3genJ3KdJh$GkXaiL?8H_w!TVRw^s>vVQgh?V`*h`0o{dW0B>Pr5ftu@@z<*O 39}j`u&O7io3b$Is?RA$O$l~kY-wa+bZ>G3dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThvO>-_DBy 8`Vb0jGrW9$=2qSMXvL3HGEG0000000000{{R30 JYKN!!u{G5u+^j1lf!PF4>GEG0000000000{{R300000033g#@Wo~0>Wpe-t0Y>fS!w4MxxaL=+DqP^k 2!wz9AHH68xp8!<%Jqp^&Hw-a000000RI3000000010+sY-wa+bZ>G11OfmAZf|a7000011aog~WdH>M 0%CAAe<9`Lptgpr6F_xjAC6(~TLj#*ewiHf`^rCgHqw;r~cW`-Qc;Wd#8M3IWybk`76TvuW{aQ_%-X`?VwZ$5L?~`!+pRSq0(b70UsmT3TT2OXeO1S(z|% -$w*kbE|<-?c3W<^i5g8qjccm_0000000030000000000HM{I9mVQf=$VRU6vV`ybc;Wd#8M3IWybk`76TvuW{aQ_%-X`?VwZ$5L?~`!+pRSq0(b70Ut6(?HNf)KK|r_7bGK +6|;}@4mz~X`tFe`+ka89>Z%z40000000030000000000HM{I9mVQf=$VRU6vV`ybC`}q*rYXqYdo~D%m7H6OD0<^0n_2##VWXRdj -y=DB@qgYOj2yJ0_Npxjxa{vGX4@YcoVqt7kbYXO5RC#b^1pxp60t`oNZ(?C=R$**)Wpf1q00;mG002M$ -0000000030{{R30000010000000030{{R3000008Nn~YibZK;X1pxpB0s_h`9&dx0-7pM3Z=O*v*GCA9 -fL-<|HrZsA`NnJlR3}KjBNr;@ghiU?gEXK9KMDE{F?;HZBRuDVqlk6qmbd^20?I5NZ-bfLFbqC#o>4E? -M+l67UG^w8*<_XZ#%uyqCrG{{7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE000000RImF00000 -00l{IaCLMB0taw%Wp+<>bODnPynwMZT8l5kSW@l}O=!>^xB4~9n`Dx!RtcK)nwJQ2Wpib6c4cG&dIKHb -X?@G`sCP;~6&DQwR5(-fxrUo0ThRw7=FYk8VVufK10Q-T=FR=Q=>S+XYD&vO>-_DBy8`Vb0 -jGrW9$=2qSMXvL3Hj|@I6Zgd6<17>D+0ot2U6Id2jc94hr -ndMfLayEe1ISdA&%p{mB1!VWk)dg;EZewKt00;(ea8!A4WdT9RTeTEeEoEcZkq99%9y`(Ly)L1)ktPMR -FX-d`h(QQ#WprU=VRT^vdIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThsZfv!yd427@;7veO2zMB=|GX`mHaCLNZ0(t`--)Viz@~C%8KNS}Z0aQ3s^SOqbBwN-D{wl@O -CODo$h9?yTI7S;;e;>sZfv!yd427@;7veO2zMB=|GYesJb7^O8ZDnqBa{_t;9p7nv%krpqN -Wpe_010COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUEjudT)PryvH%qoUf%jN6#Tx81sfg4O?s`uaep -_R|IjcWHEPWpi@^dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThClv)aMjKgwAH@`bu1x<7 -g|G$};xvA~n-$_S33g#@X=Gt^Z*l^910COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUEjudT)PryvH% -qoUf%jN6#Tx81sfg4O?s`uaep_R|IgPjE?O1pxpD002NB00mEQZ*_DA0|IYw0hP$+dLDIRU(}XWLTZug -enOC;Z(5k~zEJnJiX;;E#R7DB0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdLu)0006IPj_x* -WK(oubY)XxXk~3-1_B6jWpib6c4cG&dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThNn`>=>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HJ_ -1fvw5rj-B|XP@r^w5ufb=C_Ju$l1`nW&GEpSWb-yQe|XiWo>0-1pxpG0Y>fS!w4MxxaL=+DqP^k2!wz9 -AHH68xp8!<%Jqp^&HwZFzp>JB4@xD;^wu&SY_r(AJ000000093000000000J4 -V`yboKLkF4~iax8KK|47hp(ZeeX@0!8YhU)%QM -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 -&c?b?aZznm(1lyi>kwE&Xklq?Q)OdvWpq$ -AHP6|FsuXsI;G3ONN5@Byw$T9tCzEwrAszt-P)%HZ|LbH=L2A=l(W4CP5}mNX>oOFWB>&L0#*~&*VKn| -nRBmPlPrrd^EP>$AHP6|FsuXsI;G3ONN5@Byw$T9tCzEwrAszt-P)%HZ|LbH=L2A=l(W4CP6}8jc*fjc* -fuv7J8lm0000000030{{R3000008Nn~YibZK;X1pxpB0s_h`9&dx0 +-7pM3Z=O*v*GCA9fL-<|HrZsA`NnJlR3}KjBNr;@ghiU?gEXK9KMDE{F?;HZBRuDVqlk6qmbd^20?I5N +Z-bfLFbqC#o>4E?M+l67UG^w8*<_XZ#%uyqCrG{{7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE +000000RImF0000000l{IaCLMB0taw%Wp+<>bODnPynwMZT8l5kSW@l}O=!>^xB4~9n`Dx!RtcK)nwJQ2 +Wpib6c4cG&dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThRw7=FYk8VVufK10Q-T=FR= +Q=>S+XYD&vO>-_DBy8`Vb0jGrW9$=2qSMXvL3Hj|@I6Zgd6<17>D+ +0ot2U6Id2jc94hrndMfLayEe1ISdA&%p{mB1!VWk)dg;EZewKt00;(ea8!A4WdT9RTeTEeEoEcZkq99% +9y`(Ly)L1)ktPMRFX-d`h(QQ#WprU=VRT^vdIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThsZfv!yd427@;7veO2zMB=|GX`mHaCLNZ0(t`--)Viz@~C%8KNS}Z0aQ3s +^SOqbBwN-D{wl@OCODo$h9?yTI7S;;e;>sZfv!yd427@;7veO2zMB=|GYesJb7^O8ZDnqBa{_t;9p7nv +%krpqNWpe_010COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUEjudT)PryvH%qoUf%jN6#T +x81sfg4O?s`uaep_R|IjcWHEPWpi@^dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThClv)a +MjKgwAH@`bu1x<7g|G$};xvA~n-$_S33g#@X=Gt^Z*l^910COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC +#nUEjudT)PryvH%qoUf%jN6#Tx81sfg4O?s`uaep_R|IgPjE?O1pxpD002NB00mEQZ*_DA0|IYw0hP$+ +dLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#R7DB0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9 +xdLu)0006IPj_x*WK(oubY)XxXk~3-1_B6jWpib6c4cG&dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0ThNn`>=>Z4!V_T!KNI`QJ|h6;Zj^jB$M +PK+?7Lu3>C`4HJ_1fvw5rj-B|XP@r^w5ufb=C_Ju$l1`nW&GEpSWb-yQe|XiWo>0-1pxpG0Y>fS!w4Mx +xaL=+DqP^k2!wz9AHH68xp8!<%Jqp^&HwZFzp>JB4@xD;^wu&SY_r(AJ00000 +0093000000000J4V`yboKLkF4~iax8KK|47hp( +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 +smk?LMnX>MdwWnpYocu;h51OfmD +Vrg_^Z)t7-1pxw96V}(%hjW>8uUwNXi!t*yd7K}=K!`A`1OPgv%fU!SC#Wt^wA&hNfbvI8l{tqo-}{|d +jZ8YAkJtUQVz<=+25f0@b!lV(1pxw96V}(%hjW>8uUwNXi!t*yd7K}=K!`A`1OPgv%fU!SC#Wt^wA&hN +fbvI8l{tqo-}{|djZ8YAkJtUQVz<>3SVL%GX>LMnX>MdwWnpYocxhw=0sseMX>?<6X>I@o0RmPN*4NaB +bD49mT$3z|G4nQgoFBhHh%l@K06L}1!AP*iaju4Y+v8xG!`|yM#YZ?<6X>I@o0RmPN*4NaBbD49mT$3z|G4nQgoFBhHh%l@K +06L}1!ANKs>%7&o7^|1Fn59cLW!>7R25;!;B%7&o7^|1Fn59cLW!>7R25;!;B +#Kd;Rz-U=aO9W+B0S0Voadl~A00jX8^=uPjBlbC`N(qzPM@Gr{imSMTSY5T*7C#t%#3&jHqk=;7%h%D+ +p%U7S;b1RT)c9`>#Kd;Rz-U=aO9W+B -----END STRICT TYPE LIB----- diff --git a/stl/RGBCommit@0.1.0.stl b/stl/RGBCommit@0.1.0.stl index be4bdcb359d1c768b10dea39373b10cfcaddde86..095cee9fd154743e1dfa4ca0017094a2f609640e 100644 GIT binary patch delta 738 zcmccbKOdoYUnT zTifnu-`=%ovHRMu{I$`znp56I{>R*H`@EvJhi^9JPGO<0k(1-O%QnXdTxV1`ciG{B z%awqi+24eg>=xbJ|Ao(L%ei0gCTiWT58U`_mE`1Lq34Q>)$$>-@n#EBx^73ltqjd< zN^5Hj=BV59s6|>sx>c-d-e!N{-CTr~O_rCl<>Cx3Ni0cqNi0d6>@O-lIY#c30-@lV z>?UujpyIc#S*Ls-S7dA5)r~DtVZw2D|6V$|Zkkiz+jf(7QD&f@_D_yd*srklV2|>r z89XPN-<_C0VSd(@-$&OTVquuGk0U|f;Y-q-+|8DXYRn2>(pb-4ezJO%o!N=n?^AT9 z^WNXme*gQK8MCLi-fH@-5jVMBMPFg7Lt3EorF>mog9NkX|J!9Y7+A*!Ih3t3dgZda NP4B7P=5s27%m60ERh|F< delta 675 zcmbOcaNmDJ9}A=5AKhFcv+t8y^_-TL)Uxs`GZrl`xfFXWEMUgu zXx0Y8ihi@sBCIHyHF7c^yE-un-6qdw4^iNJTO(bWwPK-F%88|4h1;Y#Lo090dHdf= zi;#@iOuEdWp$vwy(%RgK#l@NFdAX^1CB=;E#1!TP zUaEQ`Ipbyav^i|D5sx!gTUqhVUbtk9QeJQPxy`2BDJ;}Aa&kO(+2$C5>x>GEqoNYt zct4Y4i=1gte9|Lgm)`WVJIbQ-c63VlI`?L;o*XRnd~$=F=;mnQ-CQ6BJ6mE&Nn&!w zWPN4P$-#1plc&m^QXu5t$@TK43csK4IL+33BUiUl=fGQ@$>tn(8=mMc>v5R3ML4|n zXOke%QTr!PR@krLpdoMWCnx)FzN5wV^xW!!+0R!Rsb%kCTgc7jG_7RAW~7 z^Ua4jF6WW7re4GipWhyF(tZMGSbvr1?>PQ(aozg`cPH;q(O1~dY+K0Kf9~r-sRb20 d_YG7V)bIPgwh`qz8SZs4rV+%M?ynyZEb0ERuk6O)Q5AKbFW;J -EQ>MoHhG*Mzd(pEtONi$rOUxc20~CnZ*pbzY!hN5_Bp3Y36tDMM#=e#tGI($UA5U3KNx<*C>ja}LTPkk +2vSEvOmAmtV*^$b*4NaBbD49mT$3z|G4nQgoFBhHh%l@K06L}1!AJ%|P(yEWWv`9K_hfG2G$1QB9(j~2 +{pmCf#}(73bed2I4k>>gz6nxCLPKwDZE1A%Y!hN5_Bp3Y36tDMM#=e#tGI($UA5U3KNx<*C>ja}LTPkk Z)t7=20~CnZ*pY?00DdlT>wB!7L}MA7sFvK#<=RP4S#T1Vv-hhTICs&5fM~jaB^jIPH$voP+@X(Ze?;0 wjY>38tto&d&=eG4cRAF#( @@ -24,15 +24,15 @@ iRT*14O40w5C%+Pd1Z1jmB{9L9(7`0)Rt93YLV-HLXe?vTA1;^Q1`ZqBog<<1W#~DWCZ{SL}Fu5a&K>D n*!v8^Ea7rh?dzC2n+%RZ*X#DbN~eb0#*~&*VKn|nRBmPlPrrd^EP>$AHP6|FsuXsI;G3ONJmc3T+rxD K6vW;JU&?LxLM72H?wDC1Zo}=N}D)4mkCE~Z(?C=PjX}i0tIhyPjX}d{&9|4h)I8ST&b@+9Xb*QsV74KdO^T#SWpAUbtXTLNWJNUIm1rHjqn#Z# ->rZ5L9zv-Vp*%wog4O?q)g04AaHEjnO6;Ie%sNwVNZti*Z*F5{000OCZ*Xa30wwBTwjr5Kilj@6CZU6=Z -2X|?7Ze??G0dl)S$QV;yG0%+u`Lqfm#|FpRuujhTP8r)T_J?np;R1Ad0wwBTwjr5KiljZewKt00;zcaA{-$CF)?d -A(>5zq)KIPqpYl0_!(qHG~ShH9lWER9X9JvmB{9L9(7`0)Rt93YLV-HLXe?vTA1;^Q1`ZqBog<<3Rh`# +LdY0XT`|v$|M|2EBF6^D+OST}`A!+zFZPFTn&AR;c>=GE#`k1y;WQvCHXeDDEB)y-4aXJJr*xW72o5QK +9=>FC9zv-Vp*%wog4O?q)g04AaHEjnO6;Ie%sNwVNZti*Z*F5{000OCZ*Xa30>gzLm)4dLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#s3O)a$#@6CZU6=Z +2X|?7Ze??G0dl)S$QV;yG0%+u`Lqfm#|FpRuujhTP8r)T_J?np;R1Ad0>gzBEz~t`n9TUcD*&5hFi^PVx{q1b@^7zTcrn*%qZTXa#O>ZewKt00;zcaA{-$uZ_m{ +WNzU!AS*T=d6X;t=`;<;71O75notN1DSsZmmB{9L9(7`0)Rt93YLV-HLXe?vTA1;^Q1`ZqBog<<3Rh`# Ze??GPjX}g0{{qNa${&|c4cG$00036ZE0?0WB>&L0bJY;BNZ=sBHM?<`J6+Fr=A5zq)KIPqpYl0_!(qHG~ShH9lWER -9X9JvdBoUB2y8Zom7+;NN8Xgkb3WeV)QDb*=NiflQ)(Iz254nzXJ~W)00aqiX>Db5bYX39002k +5&{WyWo~p~bZK^F0000AS7~%^Wpi^-Z*v9%25ez@WpXhBuZ_m{WNzU!AS*T=d6X;t=`;<;71O75notN1 +DSsZmdBoUB2y8Zom7+;NN8Xgkb3WeV)QDb*=NiflQ)(Iz254nzXJ~W)00aqiX>Db5bYX39002k -----END STRICT TYPE LIB----- diff --git a/stl/RGBLogic@0.1.0.stl b/stl/RGBLogic@0.1.0.stl index 4e402efe5652538114b738f06d856b64990be039..975f2766c1dae62e073fcbbcb1a4049541815a2f 100644 GIT binary patch delta 281 zcmey(^P7i@Bgoy!CqF$inR&7wvw|U;Q-E`RQR@2MW8YKq9-1ge)_0yy|I>*e-w0(Cj(=jLXXY>Z}SQ6Qvz@@^&teb&7EyyR2{1`d||g3J^qf_g5p e#1J;vmsOvzqKhmFllQP@5LWn-NpW&2n-~D6U2tyz delta 281 zcmey(^P9(nBgoy!CqF$inOXH!!ZyX3zFkYaQu7zDSrhR?GR4*8-qZ})J&Whcn!Wbt z1gdn-&&|y&ne4}`z|Q6r;GAESx-puaMS+mk$-9{p^jY)r^O92;7&ut+3o=uf2iY~G!Oy0wqL0I8SCdJ9AY+?YjkaoiW diff --git a/stl/RGBLogic@0.1.0.sty b/stl/RGBLogic@0.1.0.sty index 6c1b9c1f..a6e3fb5d 100644 --- a/stl/RGBLogic@0.1.0.sty +++ b/stl/RGBLogic@0.1.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:nKQEKac1-dDxkN3M-dXhgnba-CkprxwT-So5aC5D-meYuULE#charm-chief-invite + Id: stl:51OgjzV6-F5XuTyt-FMJe4k6-opdtsQd-cptXuc4-FqM7npk#ohio-electra-dilemma Name: RGBLogic Version: 0.1.0 Description: Consensus logic layer for RGB smart contracts @@ -11,12 +11,6 @@ @context typelib RGBLogic -import RGBCommit#aspect-shoe-garcia - use TransitionType#picture-reflex-brigade - use ExtensionType#apropos-scoop-viva - use Layer1#camilla-basket-justin - use OpId#picnic-single-gloria - import BPCore#austin-story-retro use TapretNodePartner#roger-member-educate use TapretProof#marco-border-sample @@ -24,6 +18,12 @@ import BPCore#austin-story-retro use TapretRightBranch#miracle-patriot-touch use OpretProof#good-village-flex +import RGBCommit#printer-window-alpine + use TransitionType#picture-reflex-brigade + use ExtensionType#apropos-scoop-viva + use Layer1#camilla-basket-justin + use OpId#picnic-single-gloria + import Bitcoin#signal-color-cipher use ScriptBytes#equator-cockpit-gong use TapNodeHash#paprika-amanda-hunter diff --git a/stl/Transition.vesper b/stl/Transition.vesper index 3e6a4770..58dfce39 100644 --- a/stl/Transition.vesper +++ b/stl/Transition.vesper @@ -47,7 +47,7 @@ Transition rec globals map len=0..MAX8 aka=GlobalState key is U16 aka=GlobalStateType value list len=1..MAX16 aka=GlobalValues - element bytes len=0..MAX16 + element bytes len=0..MAX16 aka=StateData inputs set len=0..MAX16 aka=Inputs Input rec prevOut rec Opout @@ -65,7 +65,7 @@ Transition rec liquid bytes len=32 wrapped aka=SecretSeal tag=1 state rec State reserved bytes len=1 aka=ReservedBytes1 - value bytes len=0..MAX16 + value bytes len=0..MAX16 aka=StateData some bytes len=32 option wrapped aka=AttachId tag=1 lock bytes len=2 aka=ReservedBytes2 revealed rec tag=1 @@ -86,7 +86,7 @@ Transition rec blinding is U64 state rec State reserved bytes len=1 aka=ReservedBytes1 - value bytes len=0..MAX16 + value bytes len=0..MAX16 aka=StateData some bytes len=32 option wrapped aka=AttachId tag=1 lock bytes len=2 aka=ReservedBytes2 valencies set len=0..MAX8 aka=Valencies