diff --git a/src/operation/state.rs b/src/operation/state.rs index dcf0c4f2..6df9ab6b 100644 --- a/src/operation/state.rs +++ b/src/operation/state.rs @@ -23,6 +23,7 @@ use core::fmt::Debug; use std::fmt; use std::fmt::{Display, Formatter}; +use std::ops::Deref; use std::str::FromStr; use amplify::confinement::SmallBlob; @@ -74,20 +75,51 @@ impl Display for AttachId { impl_serde_baid64!(AttachId); /// Binary state data, serialized using strict type notation from the structured data type. -#[derive(Wrapper, Clone, PartialOrd, Ord, Eq, PartialEq, Hash, Debug, Default, From)] -#[wrapper(Deref, AsSlice, BorrowSlice, Index, RangeOps)] +#[derive(Clone, PartialOrd, Ord, Eq, PartialEq, Hash, Debug, From)] #[derive(StrictType, StrictEncode, StrictDecode)] -#[strict_type(lib = LIB_NAME_RGB_COMMIT)] +#[strict_type(lib = LIB_NAME_RGB_COMMIT, tags = custom)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), - serde(crate = "serde_crate", transparent) + serde(crate = "serde_crate", tag = "type", content = "content") )] -pub struct StateData(SmallBlob); +pub enum StateData { + #[from] + #[strict_type(tag = 0x00)] + Static(SmallBlob), + // TODO: Add computed state - RCP-240327A +} impl StrictSerialize for StateData {} impl StrictDeserialize for StateData {} +impl AsRef<[u8]> for StateData { + fn as_ref(&self) -> &[u8] { self.as_static().as_ref() } +} + +impl Default for StateData { + fn default() -> Self { Self::Static(default!()) } +} + +impl Deref for StateData { + type Target = [u8]; + fn deref(&self) -> &Self::Target { self.as_slice() } +} + +impl Wrapper for StateData { + type Inner = SmallBlob; + + fn from_inner(inner: Self::Inner) -> Self { Self::Static(inner) } + + fn as_inner(&self) -> &Self::Inner { self.as_static() } + + fn into_inner(self) -> Self::Inner { + match self { + StateData::Static(data) => data, + } + } +} + impl StateData { /// Constructs new state data by performing strict serialization of the provided structured /// data type. @@ -106,12 +138,12 @@ impl StateData { pub fn from_serialized(typed_data: &impl StrictSerialize) -> Result { typed_data .to_strict_serialized::() - .map(Self) + .map(Self::Static) } - pub fn from_checked(vec: Vec) -> Self { Self(SmallBlob::from_checked(vec)) } + pub fn from_checked(vec: Vec) -> Self { Self::Static(SmallBlob::from_checked(vec)) } - pub fn as_slice(&self) -> &[u8] { self.0.as_slice() } + pub fn as_slice(&self) -> &[u8] { self.as_static().as_slice() } fn to_base64(&self) -> String { let alphabet = @@ -125,7 +157,13 @@ impl StateData { Alphabet::new(STATE_DATA_BASE32_ALPHABET).expect("invalid state data alphabet"); let engine = GeneralPurpose::new(&alphabet, NO_PAD); let data = engine.decode(s)?; - Ok(Self(SmallBlob::try_from(data)?)) + Ok(Self::Static(SmallBlob::try_from(data)?)) + } + + pub fn as_static(&self) -> &SmallBlob { + match self { + StateData::Static(data) => data, + } } } @@ -328,8 +366,8 @@ mod test { let data = StateData::from_serialized(&MaxData::default()).unwrap(); assert_eq!(data.len(), STATE_DATA_MAX_LEN); - for byte in data.0 { - assert_eq!(byte, 0xAC) + for byte in data.as_static() { + assert_eq!(*byte, 0xAC) } } } diff --git a/src/stl.rs b/src/stl.rs index 5c606119..7a032bf8 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:ez6C2mcp-R$E5xSD-Svibf8j-6BOqvf9-p65bBKl-FzWb$aw#trident-rover-tape"; + "stl:pRLMM7OS-$w8IXpK-!Jl$Sf4-3SrX$vn-OQi9Uzx-USWTXJY#cake-banjo-legend"; /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB_LOGIC: &str = - "stl:LfHcR$Q$-tHON4hL-lwtJ1pT-!gCSP4i-C3fw2FZ-X!HGkwE#leonid-melody-quick"; + "stl:rBp7sjZK-WyD4iXW-itLfRey-JguuaFA-ACsLvk2-$P6V0ok#rose-match-almanac"; fn _rgb_commit_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB_COMMIT), tiny_bset! { diff --git a/stl/AnchoredBundle.vesper b/stl/AnchoredBundle.vesper index 3e9d3e0a..87c771aa 100644 --- a/stl/AnchoredBundle.vesper +++ b/stl/AnchoredBundle.vesper @@ -37,7 +37,8 @@ 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 aka=StateData + StateData union + static bytes len=0..MAX16 wrapped tag=0 inputs set len=0..MAX16 aka=Inputs Input rec prevOut rec Opout @@ -55,7 +56,8 @@ TransitionBundle rec liquid bytes len=32 wrapped aka=SecretSeal tag=1 state rec State reserved bytes len=1 aka=ReservedBytes1 - data bytes len=0..MAX16 aka=StateData + data union StateData + static bytes len=0..MAX16 wrapped tag=0 some bytes len=32 option wrapped aka=AttachId tag=1 lock bytes len=2 aka=ReservedBytes2 revealed rec tag=1 @@ -76,7 +78,8 @@ TransitionBundle rec blinding is U64 state rec State reserved bytes len=1 aka=ReservedBytes1 - data bytes len=0..MAX16 aka=StateData + data union StateData + static bytes len=0..MAX16 wrapped tag=0 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 4b31a31c..64e516e4 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:ez6C2mcp-R$E5xSD-Svibf8j-6BOqvf9-p65bBKl-FzWb$aw#trident-rover-tape +Id: stl:pRLMM7OS-$w8IXpK-!Jl$Sf4-3SrX$vn-OQi9Uzx-USWTXJY#cake-banjo-legend 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: a2b07d103862ce1af940fc108bc66785e882bee82491a164259acd89af95c594 +Check-SHA256: 38b8f23c84e63b75c8821c0af26956c73850df520dff0c6fccc8ee6e09bc437e 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)HTU 76^nC$%1sKzB<;EQA|)S-x88IWKN#S$#@T&w`gPtRC#b^PGN0jYXqYdo~D%m7H6OD0<^0n_2##VWXRdj y=DB@qgYOj1yf~hNn|nr2|;XhOksItaxnt|25f0@b!lV)3_)ykOksItaxqh7bOiwb2?5A!f_n>Eea4Xl By!~KtpQ8M_qJyiO1VIUJ=H=)@ii_1#@&^bY%f%nDE%V -j@4G$n608NVcXT~JHKtpQ8M_qJyiO1VIUJ=H=)@ii_1#@&^bY%gl9|{AI +iBXS>x{dh6%v!mOA{=H?DCT=p%;*%}eo4IqY;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%f%nDE%Vj@4G$n608NVcXT~JHxYW^+v~7{W03rq(;firJ1#@&^bY%gl9|{AIiBXS>x{dh6%v!mOA{=H?DCT=p%;*%}eo4IqY;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#=h2RwFCuobYXO50cM!+*u0L_R@#`Yx46NzSCn0Q@b_Wc)$2ROK7AyTPy}pmV`~C>10COK +ba;u!+d5tm#=h2RwFCuobYXO50jVDf1CWVPkBhpE_{7Xwxr`zlW>P5TdsEEl6yAPGy##D;V`~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}bYXO50cM!+*u0L_R@#`Y -x46NzSCn0Q@b_Wc)$2ROK7AyTPy}pmV`~C>10COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUFsxGg*8 +WnpY(WB>*O1aoC!YypA{4XEgn0epQk*PX+nL>xOm%pK>soMo}bYXO50jVDf1CWVPkBhpE +_{7Xwxr`zlW>P5TdsEEl6yAPGy##D;V`~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>?uVxMf>Z^ -#E~58SS7t910|t=tEdzJ0000000030000000000OL349yXKrm}Zgg`(Y-w&}Q)OXnRCsA*1pxpG0f+wL -Wmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdF_0+y@=_hs4$+_m31+K7j??AsV?cDZDS+`&s+{eNO-Y +Q)OXnRCrKyas>eZ3IT`y;$>KfZ0H=mhJ>?uVZ*V)X6+0000000030000000000OL349yXKrm}Zgg`(Y-w&}Q)OXnRCsA*1pxpG0f+wL +Wmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdA(lIh$*g@T?;tu#}^5p4x8lu;-}qTDb5bYX39002k^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~&O52Yl{1bRQGoj1vG8y|VVR3azgI)JH -kXXAwA#*Yd3t@9}X=iS2Wo~qH0c#!yN4Y1HHF~AQa2DnK&76y)h*t7i3?~q0FzzNYX9#j-WMyS-Wn=;0 +dQCW4e)%xftOSp9TD)g5B;KO;Krzd=y+`rt_<1!4XKZg`VQg~&@lU8jE(OD@jIn+&V5Enw)!?q_7&g|X +@-dvAm{Q*e3t@9}X=iS2Wo~qH0qOIB?vN#-Vw&c`EaZ`bmE6P*s>H+AYtSdOxTqwM0SIzsWMyS-Wn=;0 ρhviK~w*eJg04e;HYn$=SsX>loIF_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^0ZQACB>WS2JTsxo?J^nrEn#tWN`qbZIFMMoKp}H73kzX$b7^O8 -ZDnqBa{+4}2S>RllQnv!#Bdhn{LP$;qli}WS_~%;XE5$2GG_^PVQgh?V`*h`0o{dW0B>Pr5ftu@@z<*O +F(lri_dqerx4lR4>iBsz2WM<=Vqt7^0r5|$LoNlwtBkRJFkqyIt<~VJ=@>TFrt&eIo|sbK2n%6zb7^O8 +ZDnqBa{=k|f$oqcqGFon!7SvFf|cCF4ywe%)@#rww794wkO2vHVQgh?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(b70Ut6(?HNf)KK|r_7bGK -6|;}@4mz~X`tFe`+ka89>Z%z40000000030000000000HM{I9mVQf=$VRU6vV`ybc;Wd#8M3IWybk`76TvuW{aQ_%-X`?VwZ$5L?~`!+pRSq0(b70UsGkaHMtG~~f>{%bk} +jqU2U-ioF~K?Z%o$(J+YA{RFR0000000030000000000HM{I9mVQf=$VRU6vV`ybC`}q*rYXqYdo~D%m7H6OD0<^0n_2##VWXRdj -y=DB@qgYOj2yJ0_Npxjxa{vGX4@YcoVqt7kbYXO5RC#b^1pxp60t`oNZ(?C=R$**)Wpf1q00;qlA5uv7J8lm0000000030{{R3000008Nn~YibZK;X1pxpB0s_h`9&dx0 +y=DB@qgYOj2yJ0_Npxjxa{vGX4@YcoVqt7kbYXO5RC#b^1pxp60t`oNZ(?C=R$**)Wpf1q00;q0Qx7!C +PXFHOo2KrE{Y|r^`i&$e4;$+}oNEKWWM*^$0000000030{{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 @@ -130,47 +130,47 @@ X>$P>NY&HCT(P)^FVARS*Zg3m2dUS*m(weL9PhQe$_)hyWq5RDZgXjGZgT(%0c3R^La7y@JVOzJ)&GXo J+V~kNcmIwC6DJ=V=(On#Ml4;000000093000000000PbWpib6c4cG&dIKHbX?@G`sCP;~6&DQwR5(-f xrUo0Th;v2Uql0Ev@(iYu*+LHGLwE58<2vcKdWo=w;u!nFdemP_$e?^hl+JkM;eY!XaQ*>c;Wkg|gVFdvI -2mk;;0000000000|Nj60000003RH4oZgXjLX>V=@3j=0mb^+R(Q4?4eR(6nw`65I6*X)C9iYp+?yjr7~y;ZDn*}WMOn+0rh%KI9Y!AFx9LC -k8@hQXE7w+qW3^C%eTEp@#^?_H3w&GZ(?C=a{)@*k0ksPcsw(q%k455`z>K{bxMO>_c)MPyFejxG7AQ2 -Zg6#Ua{;NMdRLRko603iZGCpt_aPM;fa{=9jW&m$tWDykZj`7#3_zANbB(SO{shhGe=&H{tM@@6CZbEf#WNc*y0}EqpZ*yf$Wprq7WCB(b*4NaBbD49mT$3z| -G4nQgoFBhHh%l@K06L}1!ALH*5GA>8Wft0d6dj=*oo`t>c$)o5X19O9`rXu=lIsX*Zg6#UO<`~W6`5yb -%eAXO2UPPRaj@((`=>9Tsh)f38uw_!yYu^q5NmF4cWzX2VQzD2bZKvHa{vkfmB{9L9(7`0)Rt93YLV-H -LXe?vTA1;^Q1`ZqBog<<0pcigOKR#SP>4wkiJRXIg{}t6=)Px3WG)ysOdc1(Edc-k000000RR6000000 -01#AiVQzD2bZKvHQ)6glZD9rm2yJC_VPs)+VE_pMb>vO>-_DBy8`Vb0jGrW9$=2qSMXvL3HGEG0000000000{{R300000025D|^b#!w83IT`y;$>KfZ0H=m -hJ>?uVKfZ0H=mhJ>?uVa{vheM(yUq2ps*m=2xUD -T;RqCgn#@WzFu~@adfH5^@&-|0000000000{{R300000033g#@X=Gt^Z*l+x0ssVVZ*FA(00035b8l^B -00jX8VsJHoA?4$swuZp1Wc+9AOf`(TIbyKWjTy4WkGaM+ZSSEb;k|42*wg~2q@3^Lq|9zft}OB~jx ->)hO74peesZgXjLX>V>+d2nR~0RR934pez?WkYXmZE19EWo~o?0{{nSWo~72X>$Mt0ReiLb7n-LQ-}t{ -Ge65I6*X)C9iYp+?yjr7~y&31xV6Wo~n6Z*Bku0s)^0EJ-@Z0;0Ob --P{Wzd?2rs)M&&=&l*}G;Jw22Ix+!dbsj>g6`?#s5rWnKhSeO?L~x^!;Y#eFP|P}0Z%E!6RC#b^WI=Ot -X=iS8LTqVnWK(5fY*ctqbaDj&00;poG~Qz4rf|COpMQA6DFZhcbS+pFfT9t%(h@vS@2O@10000000030 -{{R300000PRC#b^WI=OtX=iS8LTqVnWK(5fY*ct@WCZ~L2mz=z@3K-cx{@*T>hUYl8SF$_`kcru$Cs9L -Ei|vY;iCZn000000096000000000SAVQgh?V`*h`1pxpF0Y>fS!w4MxxaL=+DqP^k2!wz9AHH68xp8!< -%Jqp^&Hw-a000000RI300000001H-OY-Mg^c~p6DWd#8M00I?<6X>I@o0RmPN*4NaBbD49mT$3z|G4nQgoFBhHh%l@K06L}1!AM3Ys4h^n+Zt?u@<&aTIfpUd`<+;g -Ogf;C*Zs6&x77g#Y-w?IX=DHe0RmPN*4NaBbD49mT$3z|G4nQgoFBhHh%l@K06L}1!AM3Ys4h^n+Zt?u -@<&aTIfpUd`<+;gOgf;C*Zs6&x78C^Lug@XZbEEnZe&wsVQf@*X=DTf00&}ebYpL6ZU6-V0#*~&*VKn| -nRBmPlPrrd^EP>$AHP6|FsuXsI;G3ONU+9nu7-Qt<6xS@-s>{OM>iY*&c?b?aZznm(1lyi>j4IAX>oOF -WB>&L0#*~&*VKn|nRBmPlPrrd^EP>$AHP6|FsuXsI;G3ONU+9nu7-Qt<6xS@-s>{OM>iY*&c?b?aZznm -(1lyi>kwE&Xklq?Q)OdvWpq$AHP6|FsuXs -I;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*fZb7|K94GrtXLRO|zu>jU*-y8|yusYXiSzW^@K&baY{3XaEEP +00eGtZe;)f009JZZ*64&1pxtsaSf9!PV~dK2uo>;u!nFdemP_$e?^hl+JkM;eY!XaQ*>c;Wkg|gVFUpH +26J>_bZKJ%1pxpE002M$0000000030{{R300000ARB~Z%b7^#GZ*B$)17>D+0ot2U6Id2jc94hrndMfL +ayEe1ISdA&%p{mB1!VWk)e2*8Zgg^CV{}Pm0iOsgNjk^^qPoT1+zTRnAg`3vXv9d*8d@RXy~6c6G6imL +ZewKt00<6ra$#@6CZd7@2WdSr&53UoI8eY9A{1GERg--GiI0S#x1is&)M%fmnGH3{GWprU=VRT^u +^?FS>S$_F2)vN@Mb6UJ-F(lri_dqerx4lR4>iBsz2WM<=Vqt7^0r5|$LoNlwtBkRJFkqyIt<~VJ=@>TF +rt&eIo|sbK2nK0xaCLNZ0jZ*TSChz_$|Xx}eRkFNAr%^eLl(1e@}~9=0-ijXfD2)Bb7^O8ZDnqBa{;OS +3~HQXW-oGm^~73C5-+!jGthNMriE}%x)if3>_`cAVQgh?V`*h`0o{dW0B>Pr5ftu@@z<*O39}j`u&O7i +o3b$Is?RA$O$l~kY-wa+bZ>G3dIKHbX?@G`sCP;~6&DQwR5(-fxrUo0Th$AHP6|FsuXsI;G3ONG`V!CAn^87TS9h9ibhaZ&^Bcn*B*;w|~I;-PD|t>j-IX +aCLM|VQ>KznP+6nwW~k}RP!NmuV?G015$>$mV(; +bz)!CmQ_M(k?Vd!kfCo{nDM?)_qK{868FUc?=1|{x^#*6Zw4O&>qKuQcuX_U9cUaeX|w?en#w1#0RR91 +00000|Nj60000005L9wuZgXjLX>V>*V`ybM?JbaMa- +0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdAr8G@<&SffJ|QFn~N>u=2wF+7z(Wqt=tdZk`V^ +s(Ana000000093000000000YNb8~5DZf#|5baMa-0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9 +xdAr8G@<&SffJ|QFn~N>u=2wF+7z(Wqt=tdZk`V^s(Ana000000093000000000SgVQgh?V`*h`00{v` +?dHP>9R0ZFSEMRj;Km4qfBYZ5UUs>0bg9bqiCNA700000000300000000009c42I3WMOn~asUJZ00eGt +Ze;)f009JZZ*64&1pxwLa5aA+<>R2XhQO_4{AcS-HH^7AVzASV8M4NYxyCka@1Z8)ymjIKNK5;L!8Fkf +GTe+FK;UUh9M-4n+}vRfRB~Z%b7^#GZ*Ek1aAgGn0006GRC#b^LvL+uX>@I6Zgd0#00(DfZe??6a{vVa +0eYBoW<;S=hz7(nM>#ZYFDFBsuX37z{Rmhlw67{`z5xn!a$#@6CZU6-W0iOsgNjk^^qPoT1+zTRn +Ag`3vXv9d*8d@RXy~6c6G66JF53UoI8eY9A{1GERg--GiI0S#x1is&)M%fmnGH3z`Wq5RDZgXjGZU6-W +0iOsgNjk^^qPoT1+zTRnAg`3vXv9d*8d@RXy~6c6G67_D9zv-Vp*%wog4O?q)g04AaHEjnO6;Ie%sNwV +NZuM$d2nT9L349yXKr&sY-w&}Q)OXnRCrKyas>eZ2mx*8kYNN3&UdX>dj91(yDQyg{VADB)^$BaZ2p8B +wp0NC000000096000000000?Od2nT9L349yXKr&sY-w&}Q)OXnRCsA*1pxpE0at2fNM5hbe(pA;ULH_< +)qgA={!)0DVov#r-kv=fkpTbz000000RR600000000~xMY-Mg^X=QT-0RRaBM(yUq2ps*m=2xUDT;RqC +gn#@WzFu~@adfH5^@&-|0000000000{{R30000003szxlWo~16RC#b^1pxp60u)$7Xklq?LTqVnWK(5f +Y*ctqbaDg&00&}ebYpL6ZU6-V0#*~&*VKn|nRBmPlPrrd^EP>$AHP6|FsuXsI;G3ONJb~9E>N`F8f<{_ +M@^MEhcVy#omh=bI-rl&{j_4Y)d2=oOFWB>&L0#*~&*VKn|nRBmPlPrrd^EP>$AHP6|FsuXsI;G3O +NJb~9E>N`F8f<{_M@^MEhcVy#omh=bI-rl&{j_4Y)e~4lXklq?LTqVnWK(5fY*ct@WCQ{L2V!Y-V{d70 +00jX8Ruk6O)Q5AKbFW;JEQ>MoHhG*Mzd(pEtONi$rOUxcu*Pw&hI`xNV4B0;>oUbhHyi-Y#=22)QEgSw +gMoHhG*Mzd(pEtONi$rOUxcu*Pw&hI`xNV4B0;>oUbh +Hyi-Y#=22)QEgSwgbW>$vYy<)T2V!Y-V{d7000jX8Ruk6O)Q5AKbFW;JEQ>Mo +HhG*Mzd(pEtONi$rOUxcXc_Cg)w39@m$R6qOEzWQ+NTC@=;MoHhG*Mzd(pEtONi$rOUxcXc_Cg)w39@m$R6qOEzWQ+NTC@=;?<6X>I@o0Rr`G6JjIwIj2eqliWu}$@z+_xPw?-wb>Rw7=FYk8VaL=Li5Yl(a@n1 ++Ku60FILp}Zw|!7cE!MGSxid=WmW+OY-w?IX=DHe0Rr`G6JjIwIj2eqliWu}$@z+_xPw?-wb>Rw7=FYk +8VaL=Li5Yl(a@n1+Ku60FILp}Zw|!7cE!MGSxid=WmW -----END STRICT TYPE LIB----- diff --git a/stl/RGBCommit@0.1.0.stl b/stl/RGBCommit@0.1.0.stl index f5ce011a..47af5410 100644 Binary files a/stl/RGBCommit@0.1.0.stl and b/stl/RGBCommit@0.1.0.stl differ diff --git a/stl/RGBCommit@0.1.0.sty b/stl/RGBCommit@0.1.0.sty index 5df9c6f0..8324aba1 100644 --- a/stl/RGBCommit@0.1.0.sty +++ b/stl/RGBCommit@0.1.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:ez6C2mcp-R$E5xSD-Svibf8j-6BOqvf9-p65bBKl-FzWb$aw#trident-rover-tape + Id: stl:pRLMM7OS-$w8IXpK-!Jl$Sf4-3SrX$vn-OQi9Uzx-USWTXJY#cake-banjo-legend Name: RGBCommit Version: 0.1.0 Description: Consensus commitment layer for RGB smart contracts @@ -226,8 +226,8 @@ data State : reserved CommitVerify.ReservedBytes1 , data StateData , attach AttachId? -@mnemonic(nissan-pattern-inside) -data StateData : [Byte] +@mnemonic(pasta-pardon-hazard) +data StateData : static [Byte] | (|) @mnemonic(michael-exact-eric) data Transition : ffv Ffv diff --git a/stl/RGBLogic@0.1.0.sta b/stl/RGBLogic@0.1.0.sta index 54fdaf0f..4a748dd6 100644 --- a/stl/RGBLogic@0.1.0.sta +++ b/stl/RGBLogic@0.1.0.sta @@ -1,14 +1,14 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:LfHcR$Q$-tHON4hL-lwtJ1pT-!gCSP4i-C3fw2FZ-X!HGkwE#leonid-melody-quick +Id: stl:rBp7sjZK-WyD4iXW-itLfRey-JguuaFA-ACsLvk2-$P6V0ok#rose-match-almanac Name: RGBLogic Dependencies: BPCore#austin-story-retro, - RGBCommit#trident-rover-tape, + RGBCommit#cake-banjo-legend, Bitcoin#signal-color-cipher -Check-SHA256: 430e87ae7e142bc8985569b79136cc2340a1e07f2089f235e6c7fa1b517c6aab +Check-SHA256: 878b8ed79e2291594001dc3718f479c05682897cb829b6ad263d44d6f83088b8 -2vSEvOmAmtV*^$b*4NaBbD49mT$3z|G4nQgoFBhHh%l@K06L}1!AJ%|P(yEWWqUq?+Gi<8@j1mH(!M6& -@;-q&tKasXxoi@p7d4yxtO-&_LPKwDZE1A%Y!hN5_Bp3Y36tDMM#=e#tGI($UA5U3KNx<*C>ja}LTPkk +2vSEvOmAmtV*^$b*4NaBbD49mT$3z|G4nQgoFBhHh%l@K06L}1!AJ%|P(yEWWu+3#GqaNa4+vh8z9wJN +e~r?ufA5^+BK1u1Q6-aHmI+cvLPKwDZE1A%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;Srg4$;(NAWquAkw}j-|{|zI;-FIp1Euir581u -{j6kl9zv-Vp*%wog4O?q)g04AaHEjnO6;Ie%sNwVNZti*Z*F5{000OCZ*Xa30((A!+Gi<8@j1mH(!M6& -@;-q&tKasXxoi@p7d4yxtd+>-dLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#s3O)a$#@6CZU6=Z -2X|?7Ze??G0dl)S$QV;yG0%+u`Lqfm#|FpRuujhTP8r)T_J?np;R1Ad0((A!+Gi<8@j1mH(!M6&@;-q& -tKasXxoi@p7d4yxtTa*&t`n9TUcD*&5hFi^PVx{q1b@^7zTcrn*%qZTXa#O>ZewKt00;zcaA{-$dp?5N -XDLVVImIB-z9!%DK7l%`-}aulY!amxHJkmcmB{9L9(7`0)Rt93YLV-HLXe?vTA1;^Q1`ZqBog<<3Rh`# +LdY0XT`|v$|M|2EBF6^D+OST}`A!+zFZPFTn&AR;c><*p%rmo+{|^XWlD;Ni(tnN8t$**F@6CZU6=Z +2X|?7Ze??G0dl)S$QV;yG0%+u`Lqfm#|FpRuujhTP8r)T_J?np;R1Ad0;LknGqaNa4+vh8z9wJNe~r?u +fA5^+BK1u1Q6-aHmNZfit`n9TUcD*&5hFi^PVx{q1b@^7zTcrn*%qZTXa#O>ZewKt00;zcaA{-$r4r0D +vy%T02wsxDCSTHjjnb`u@0{c!^-S?mC6ip1mB{9L9(7`0)Rt93YLV-HLXe?vTA1;^Q1`ZqBog<<3Rh`# Ze??GPjX}g0{{qNa${&|c4cG$00036ZE0?0WB>&L0bJY;BNZ=sBHM?<`J6+Fr=ADb5bYX39002k +5&{WyWo~p~bZK^F0000AS7~%^Wpi^-Z*v9%25ez@WpXhBr4r0Dvy%T02wsxDCSTHjjnb`u@0{c!^-S?m +C6ip1dBoUB2y8Zom7+;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 d5c99d76..9c71494e 100644 Binary files a/stl/RGBLogic@0.1.0.stl and b/stl/RGBLogic@0.1.0.stl differ diff --git a/stl/RGBLogic@0.1.0.sty b/stl/RGBLogic@0.1.0.sty index a2e5fc94..bcfdee67 100644 --- a/stl/RGBLogic@0.1.0.sty +++ b/stl/RGBLogic@0.1.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:LfHcR$Q$-tHON4hL-lwtJ1pT-!gCSP4i-C3fw2FZ-X!HGkwE#leonid-melody-quick + Id: stl:rBp7sjZK-WyD4iXW-itLfRey-JguuaFA-ACsLvk2-$P6V0ok#rose-match-almanac Name: RGBLogic Version: 0.1.0 Description: Consensus logic layer for RGB smart contracts @@ -18,7 +18,7 @@ import BPCore#austin-story-retro use TapretRightBranch#miracle-patriot-touch use OpretProof#good-village-flex -import RGBCommit#trident-rover-tape +import RGBCommit#cake-banjo-legend use TransitionType#picture-reflex-brigade use ExtensionType#apropos-scoop-viva use Layer1#camilla-basket-justin diff --git a/stl/Transition.vesper b/stl/Transition.vesper index 521b4213..d65ff77b 100644 --- a/stl/Transition.vesper +++ b/stl/Transition.vesper @@ -47,7 +47,8 @@ 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 aka=StateData + StateData union + static bytes len=0..MAX16 wrapped tag=0 inputs set len=0..MAX16 aka=Inputs Input rec prevOut rec Opout @@ -65,7 +66,8 @@ Transition rec liquid bytes len=32 wrapped aka=SecretSeal tag=1 state rec State reserved bytes len=1 aka=ReservedBytes1 - data bytes len=0..MAX16 aka=StateData + data union StateData + static bytes len=0..MAX16 wrapped tag=0 some bytes len=32 option wrapped aka=AttachId tag=1 lock bytes len=2 aka=ReservedBytes2 revealed rec tag=1 @@ -86,7 +88,8 @@ Transition rec blinding is U64 state rec State reserved bytes len=1 aka=ReservedBytes1 - data bytes len=0..MAX16 aka=StateData + data union StateData + static bytes len=0..MAX16 wrapped tag=0 some bytes len=32 option wrapped aka=AttachId tag=1 lock bytes len=2 aka=ReservedBytes2 valencies set len=0..MAX8 aka=Valencies