From 171318dda594afe08f32d1a74ff93ae8434aa219 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Mon, 11 Mar 2024 17:39:11 +0100 Subject: [PATCH 1/4] vm: add support for new ASCII Armor --- Cargo.lock | 41 ++++---- Cargo.toml | 11 +- src/schema/script.rs | 26 ++++- src/stl.rs | 2 +- stl/RGB@0.1.0.sta | 238 +++++++++++++++++++++---------------------- stl/RGB@0.1.0.stl | Bin 18452 -> 18462 bytes stl/RGB@0.1.0.sty | 53 +++++----- stl/Schema.vesper | 79 +++++++------- 8 files changed, 244 insertions(+), 206 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dfd900dc..a2813e4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,10 +5,10 @@ version = 3 [[package]] name = "aluvm" version = "0.11.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0278873e02b7eca06433f4f13aaf77bbf6e6976444d17c811e140c254a67c38" +source = "git+https://github.com/AluVM/rust-aluvm?branch=armor#3bf009122c09a90df495049e0182712c675c2b26" dependencies = [ "amplify", + "ascii-armor", "baid58", "getrandom", "half", @@ -118,6 +118,19 @@ dependencies = [ "serde", ] +[[package]] +name = "ascii-armor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743d90b41a39d6e3920eef64a70f6411097cbb47141606a45b2a96533ec7111c" +dependencies = [ + "amplify", + "baid58", + "base85", + "sha2", + "strict_encoding", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -188,8 +201,7 @@ dependencies = [ [[package]] name = "bp-consensus" version = "0.11.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4455276e0c26bc4a742b8cf2a2a8fe1a42b06f15873dd6145c32af9a7a387a94" +source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" dependencies = [ "amplify", "chrono", @@ -203,8 +215,7 @@ dependencies = [ [[package]] name = "bp-core" version = "0.11.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c1a3c6505e4fbf81d3f7ba5b79c789336e7b959d6b87ff3f37e0b70df68a51" +source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" dependencies = [ "amplify", "bp-consensus", @@ -222,8 +233,7 @@ dependencies = [ [[package]] name = "bp-dbc" version = "0.11.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9efc8f72528ae16a84aeac95657f326268289bb5b5b64c24309c1a6bc0b97caa" +source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" dependencies = [ "amplify", "base85", @@ -237,8 +247,7 @@ dependencies = [ [[package]] name = "bp-seals" version = "0.11.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a54af971320d2b3358eb7b4380d0dda72810b8f8b417790f38e2a8f28a10cad" +source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" dependencies = [ "amplify", "baid58", @@ -292,8 +301,7 @@ dependencies = [ [[package]] name = "commit_encoding_derive" version = "0.11.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25b4b09de08ea8530138fb8a7ca45d90b53fef8d582a944a1b08eedf3f2583e" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=armor#78f22a51b87115869f454ed0516a1bcdd8994db4" dependencies = [ "amplify", "amplify_syn", @@ -305,8 +313,7 @@ dependencies = [ [[package]] name = "commit_verify" version = "0.11.0-beta.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00351b49be0ce72775b37cca336c3c10e958d810ca097f0712d95a63684b4f99" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=armor#78f22a51b87115869f454ed0516a1bcdd8994db4" dependencies = [ "amplify", "commit_encoding_derive", @@ -595,6 +602,7 @@ version = "0.11.0-beta.4" dependencies = [ "aluvm", "amplify", + "ascii-armor", "baid58", "bp-core", "chrono", @@ -786,12 +794,11 @@ dependencies = [ [[package]] name = "strict_types" version = "2.7.0-beta.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66de5cdf197b68e13fcac9fad7ed288f44052a319a3df3abbaba9c6e52f735b" +source = "git+https://github.com/strict-types/strict-types?branch=armor#00741ba09189536d8cdaf048a7f17795393ee382" dependencies = [ "amplify", + "ascii-armor", "baid58", - "base85", "half", "indexmap", "serde", diff --git a/Cargo.toml b/Cargo.toml index d9b74fc7..de1439a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,9 +23,10 @@ required-features = ["stl"] [dependencies] amplify = { version = "~4.6.0", features = ["rand"] } +ascii-armor = "0.2.0" strict_encoding = "~2.7.0-beta.1" -strict_types = "~2.7.0-beta.1" -aluvm = { version = "~0.11.0-beta.4", features = ["std"] } +strict_types = { version = "~2.7.0-beta.1", features = ["armor"] } +aluvm = { version = "~0.11.0-beta.4", features = ["std", "ascii-armor"] } commit_verify = { version = "~0.11.0-beta.4", features = ["rand", "derive"] } single_use_seals = "~0.11.0-beta.4" bp-core = { version = "~0.11.0-beta.4" } @@ -60,3 +61,9 @@ wasm-bindgen-test = "0.3" [package.metadata.docs.rs] features = [ "all" ] + +[patch.crates-io] +strict_types = { git = "https://github.com/strict-types/strict-types", branch = "armor" } +aluvm = { git = "https://github.com/AluVM/rust-aluvm", branch = "armor" } +commit_verify = { git = "https://github.com/LNP-BP/client_side_validation", branch = "armor" } +bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "armor" } diff --git a/src/schema/script.rs b/src/schema/script.rs index 8b9324d6..84db3cfb 100644 --- a/src/schema/script.rs +++ b/src/schema/script.rs @@ -105,8 +105,18 @@ impl Default for Types { fn default() -> Self { Types::Strict(none!()) } } +impl Types { + pub fn as_strict(&self) -> &TypeSystem { + match self { + Types::Strict(ts) => ts, + } + } +} + #[cfg(feature = "serde")] mod _serde { + use armor::AsciiArmor; + use serde_crate::de::Error; use serde_crate::{Deserialize, Deserializer, Serialize, Serializer}; use super::*; @@ -114,14 +124,24 @@ mod _serde { impl Serialize for Types { fn serialize(&self, serializer: S) -> Result where S: Serializer { - serializer.serialize_str(&self.to_string()) + if serializer.is_human_readable() { + serializer.serialize_str(&self.as_strict().to_ascii_armored_string()) + } else { + self.as_strict().serialize(serializer) + } } } impl<'de> Deserialize<'de> for Types { - fn deserialize(_deserializer: D) -> Result + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { - todo!() + if deserializer.is_human_readable() { + let s = String::deserialize(deserializer)?; + let sys = TypeSystem::from_ascii_armored_str(&s).map_err(D::Error::custom)?; + Ok(Types::Strict(sys)) + } else { + Ok(Types::Strict(TypeSystem::deserialize(deserializer)?)) + } } } } diff --git a/src/stl.rs b/src/stl.rs index 3a8129a7..ca97f162 100644 --- a/src/stl.rs +++ b/src/stl.rs @@ -34,7 +34,7 @@ use crate::{ /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB: &str = - "urn:ubideco:stl:BSZqoDzjgGJxgRUwLUEJ7FZC74RV87ighGBsbx59AUPa#package-rapid-record"; + "urn:ubideco:stl:6NAFZspAZ14Y1NynHeQBJVNqep4arKkKx8zchhHrESvr#airport-border-match"; fn _rgb_core_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB), tiny_bset! { diff --git a/stl/RGB@0.1.0.sta b/stl/RGB@0.1.0.sta index 9ecc3cb4..c3a9c086 100644 --- a/stl/RGB@0.1.0.sta +++ b/stl/RGB@0.1.0.sta @@ -1,17 +1,17 @@ -----BEGIN STRICT TYPE LIB----- -Id: 4Q4DnsLMN2YERM8yrZWoDx6tUBwkR3A9SHhCFYxNSaeW#miranda-romeo-value +Id: urn:ubideco:stl:6NAFZspAZ14Y1NynHeQBJVNqep4arKkKx8zchhHrESvr#airport-border-match Name: RGB -Dependencies: - c8Tnib31q1p7szyPukEGDoQzJQ5qJwPCn5uZCHUXzB9#cupid-metro-warning, - 57sPvZcwQaziec3ux249XoCMhziQpKB8Yw99U5oRwfqW#deluxe-safari-random, - 5teCJyjMWaxbQK8vdga2soWh2U7waERS3ev8KHShJcgv#trumpet-scratch-pelican, - DVtm25LRKU4TjbyZmVxPhvCmctZ6vKkPKqfpU2QsDNUo#exodus-axiom-tommy, - DzTvt9gGhPUKD8Dkkjk9PDBhkJ4gtWxXWQjxnmUYLNrs#voyage-kimono-disco, - HX2UBak8vPsTokug1DGMDvTpzns3xUdwZ7QJdyt4qBA9#speed-atlanta-trilogy +Dependency: 5teCJyjMWaxbQK8vdga2soWh2U7waERS3ev8KHShJcgv#trumpet-scratch-pelican +Dependency: 7qvjR4HCwJKF3mxE5GqsAaADces5JDRwb8ajAse9mkz3#exhibit-karate-ritual +Dependency: BeAiDVK898mzgHrmWgxHtysDhmffgMEoDwBgNuZo7QeZ#connect-verona-secret +Dependency: DVtm25LRKU4TjbyZmVxPhvCmctZ6vKkPKqfpU2QsDNUo#exodus-axiom-tommy +Dependency: DzTvt9gGhPUKD8Dkkjk9PDBhkJ4gtWxXWQjxnmUYLNrs#voyage-kimono-disco +Dependency: HX2UBak8vPsTokug1DGMDvTpzns3xUdwZ7QJdyt4qBA9#speed-atlanta-trilogy +Checksum-SHA256: 4c5c6caa9696714569f28468625105bc9ca18685314e9cec06688db9125ec93b -15!sq1_=Md_Ce;SSLEx{oG{4aHr^2iyiLDUBh#^}_A@_Ma0Wt9LvM0rJux=&4zPT -b9*IMFYW>~BZ&yS~-fAwW*(Pc?@Ubg}3`1{iZE18?WpZg|c}S^j?8_As^WnPDotH -zoVsdtr@aSRwVWi2G1l#x)zY9}za%p39RC#b^bGfqzpjxL^Nrpp0Zn_o=KaY%P`R +15!sq21u!F?8_As^WnPDotHzoVsdtr@aSRwVWi2G1l#x)zY9}za%p39RC#b^b7ii +Q;}PlOTz3o-rV4|wcnm{tZEb0ER%LQ&W_g|(R>}VzkYu +K&;gYF}`ST85zfDapD^Lh_E~IU~Uo2?YlHei-0Jn$(Q *>nYY!hN5_Bp3Y36tDMM#=e#tGI($UA5U3KNx<*C>ja}LTPkkZ)t7@1wm|eR!sr` ZSSEb;k|42*wg~2q@3^Lq|9zft}OB~jx>)hO72TW;VQ)zT%r!Z9lE%{u?@QI^ @@ -52,18 +52,18 @@ uLb6QJd!r4rMT?gybhb+7)1`v1STXd2nS@d2@7SZKxFND6s8S?e4Bod8Fs%pFp$u RTdC#o53z}8oz#490^8gWo%?lVQpo>(!!T*!6CpSAZ@ZpjiDMu$$f>uzFMDM-zty UwM{z*RC!ZnZAoOz*VP7EGy*S=nP^gIFHh@#z{+#L^D9E+qxG=WVR;M(R$+2!VQz HrPArtZUYsn1#>3pADvHfH$;e<5S!D{TQ^>7ijMb15Rc>i-ZdPG(X<=@3b5mt)Nn -}<42|;XhOksItaxnt|25f0@b!lV)3_)ykOksItaxqh7bOiwb2?5A!f_n>Eea4XlB +}?52|;XhOksItaxnt|25f0@b!lV)3_)ykOksItaxqh7bOiwb2?5A!f_n>Eea4XlB y!~!YxB>-laB^jI00jX -82>-+OLFT7d!YxCL);a%FS^2 ->-+OLFT7d!YxB>-laB^jI00jX +8o*Guk{~eHIrl#SNsfzjY4qm@aO)e`?2zD-{ZNB9WYoxJ*r=1Ym781z2z}Xa8AUD +L%7X0(MZ+m5XM3^r;0|aDsVQc^f0tR$paB^jI0-hRH$^RXYWTvL!lBtUM^A29WO- +(K!YxCL);a%FS^o +*Guk{~eHIrl#SNsfzjY4qm@aO)e`?2zD-{ZNB9WYoxJ*r=1Ym781z2z}Xa8AUDL% 7X0(MZ+m5XM3^r;4nb~XXm4_5WI}arWNc*y0tR7jV`y)30X6Cu6ZFTF{1(Q>0mQB U&A7nhZflGzYjutGK7Ikb(*|O7Ze(m_0Y!?)zegi%Q%1`*IadPUvJHjC=x|NK{gn A{C>lLf{|G^Ib7gc?VP^#a00#g7Kp+4jL349yXKqquc4c8~Wn@8gbYWv?LTqVnWK @@ -165,9 +165,9 @@ t0buIt^000000093000000000ODb5bYX39002k_bY*jN Ze?@=!34}kUMys8WKDQu6}!mpvbyE1r(Y~+*plEP2LQK-VTK~nd#>~BZ&yS~-fA -wW*(Pc?@Ubg}ZLh7x^`{^P$fKg#%8c8X#<$(NgM!uni2C|Kr}onZ25ED1b!Bn_Ju -x=&4zPTb9*IMFYW>~BZ&yS~-fAwW*(Pc?@Ubg}ZLh7x^`{^P$fKg#%8c8X#<$(Ng +qYi_#e2@QaC_fb3SOOy6Z3Sn$?OksIta&s{PWv;<0l-(Pe$^)UD5K7r}*s>bq5$W +SxcMKAy3WKnCZLh7x^`{^P$fKg#%8c8X#<$(NgM!uni2C|Kr}onZ25ED1b!Bn_Wv +;<0l-(Pe$^)UD5K7r}*s>bq5$WSxcMKAy3WKnCZLh7x^`{^P$fKg#%8c8X#<$(Ng M!uni2C|Kr}onZ4nk~cZe(e0XGURTbZ>G60RRU806-uB4?}NmV`X7%Wn@8gbYWv? 1pxpD002NB01ZQLZewL(Y-MCbVRT^y0RRU806-uB5kqfoV`X7%Wn@NmZf9v?Y-I) l3S)0=ZE19EWo~oCMj_000 0000000|NsC00000024Qq`VPj|j2?4>GwFIPNm9p@0Q=N4quj=`j_>&t6$4Wi|KW ;46+RXp}0000000960|Nj60000U@Z*FvQVPkYjWCZ~L2LJ#-AOH)XM +YXO51_B0iV`yb*EJ#X>)XM a(Mw(=vZ=c&j?2kZ}m2l1S)3m|2(paO!_1u7=ROpoS?f2L}7GcQ*>c;Wd#8M2mk; ;0000000000|Nj60000002}O8xWo~n6Z*B$(17>D+0ot2U6Id2jc94hrndMfLayE e1ISdA&%p{mB1!VWk)e2*8Zgg^CV{}Pm0iOsgNjk^^qPoT1+zTRnAg`3vXv9d*8d @@ -236,18 +236,18 @@ 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 -?$RqLjMZHkZMH`_*7p8Bq~h_jF44Wv( -wu*EO3lj;7mgbWq5RDZgXjGZgT(%0c3R^La7y@JVOzJ)&GXo9MeQ_qmbcB?4VH0I -#X{*-T`K`mxPbRc{yO;G?MFf5|FbFtPs&XH&iWBWDy9IP;meN000000093000000 -000Yga$#@6CZgT(%0W?w%t`n9TUcD*&5hFi^PVx{q1b@^7zTcrn*%qZTXaT* -)Z+OZ*<==ihs+9Cml$UIAG)lndNx^Mj&7B -A{g&0cZZ29GV7GV{&P5bOZqb1z~J;R&4+U0Rf`=>Yi|1oRQ4i-A3(?aOIBm6oWp< -K3rtAYFooot*{GIbYXO5Q)6glZD9li01ISgV{Bn^VRUJBWdHyG0SIPwZf9v?Y-Io -i0Rj2+tO#bVL3d`<{R|O(1hLsv{SIed5<6l9>v2!%ioJpYH;+t0eX2w~ -A!Q+0eaZ{MVycPK^T!VRUq1V`yz@6CZUzbiW@dH)+M7`mSQb`xkca!3baG*1bV+0Zp9m~TI>-W|y2ahx3nF|Vuawki#7NH?S|Q-Q!u2{ -b4s>#1ZgXjLX>V>+d2nR`G*S<)6P6lYy(#<=BR_>s@(?%#f7ArN-=Rj?7Ns(12yJ -C_VPs)+VFBT3XYt3uXDDBzV~Y{PMVQdbhM>^D^r|Pn&u&Un5eElnY;R&=Y;ytH_t -7`^M?JbaMfzqIy@8$eYR~OKp92) -%PJ48iGR>vvBgJ_74J{JehzCVRLh7XKrm}Zgg`2paMVhWqNlC78^@LRWpe@Dg=PS6VPp{$?vC--s`v@B8YHl)C#jpVFzBk -!DMw8QcWHEPWpi@@llNeFa6}P}rq7L!(40)FbL%msz%JU8hqvFyoea2o26JO_X>f -D_llNeFa6}P}rq7L!(40)FbL%msz%JU8hqvFyoea2o5L9wuZgXjLX>V>qb#7#AWd -;HWX>M?JbWLG!0Tr2NWXrXyKnGOwA#t$mH2bG7pQ)aE=^FQF!@KkQh!AUTZ+C7~a -$#@6CZgT(%0hP$+dLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#Q`SIFNo!H -N~lqHg;>vsoU&`ys3~=1W<7?!)Pf^s=!pRU000000096000000000nFa$#@6 -CZc}4uWo=;w1qf|rbYWy+bYTKWsch`a6%+H}y3w7NL%Cvdc9ihwVg6yH$(01#_!h -rw1fvw5rj-B|XP@r^w5ufb=C_Ju$l1`nW&GEpSWb-xXKZg`VQg~%3IWybk`76Tvu -W{aQ_%-X`?VwZ$5L?~`!+pRSq0(b70UrO!8D=zpn(&o-7tVWUa<1Q{n`|;)uYyv! -)~4rGOBq100000000300000000006X>M?JbaMa-0f+wLWmt%8=p4R=gtK{LClh6Z -#kObxUW*hKHnBv9xdAr8G@<&SffJ|QFn~N>u=2wF+7z(Wqt=tdZk`V^s(Ana0000 -00093000000000YNb8~5DZf#|5baMa-0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW* -hKHnBv9xdAr8G@<&SffJ|QFn~N>u=2wF+7z(Wqt=tdZk`V^s(Ana000000093000 -000000SgVQgh?V`*h`00{v`?dHP>9R0ZFSEMRj;Km4qfBYZ5UUs>0bg9bqiCNA70 -000000030000000000ERB~Z%b7^#GZ*Ek1aAgGn0006GRC#b^LvL+uX>@I6Zgd0# -00(DfZe??6a{vVa0bfr};;)}DMntPPag~|pcFiphlPw>bE^oIw3-`sIg8>S3a$#< -BX>@6CZU6-W0iOsgNjk^^qPoT1+zTRnAg`3vXv9d*8d@RXy~6c6G66JF53UoI8eY -9A{1GERg--GiI0S#x1is&)M%fmnGH3z`Wq5RDZgXjGZU6-W0iOsgNjk^^qPoT1+z -TRnAg`3vXv9d*8d@RXy~6c6G67_D9zv-Vp*%wog4O?q)g04AaHEjnO6;Ie%sNwVN -ZuM$d2nT9L349yXKr&sY-w&}Q)OXnRCrKyas&hb3uI+uY+-U?bZK^F00jX62mv`K -^WREqS2tt~EBII@xVqZNcP`ond^UU-JbUWd$~FK100000009600000000039W_50 -7X<}?;00jX62m#u~=^e=I{=p`1zMng|0+NmwUpUW`Z@54^_oW>WVpRYD00000009 -60000000006Cb98cbV{~&L00;qEk8=qnO(R<<%JIK<1B78x*e6}1oxDzJ3ElvocGBqp0000000030{ -{R30000303So3~VPj}*Wo~o;1pxpE0m(AD*LcpQ8@w}U$Ufy>Q8MyKC)}>Xt~#}1 -xwH`_Bme*a000000RR600000000~xMY-Mg^X=QT-0RRaBM(yUq2ps*m=2xUDT;Rq -Cgn#@WzFu~@adfH5^@&-|0000000000{{R30000003szxlWo~16RC#b^1pxp60tr -@cX=GD$VRU5$0RR914OeM&Ze??GL2hGcZ*m3#3U_IAZe??GPjX}d!XE700MowW>y -HAPayt955WqH<>CXdb8I%>K1P5u#33q99Ze??GNn`>o?Kom?q=ULN -^A!11b?H{wM>P}NCm0qyW47Umu>lBgW@bZZVQFpv000VCX>@L7b8}E{a|QwiXk}? -oOFWB>&L0oveUCrPk_WG -6sx?${uy634SV-AWEp3d?KRD+IzzO%zx|Xklq?LTqVnWK(5fY*ctqbaDg&00&}eb -YpL6ZU6-V0to-Z_Ce;SSLEx{oG{4aHr^2iyiLDUBh#^}_A@_Ma7HJnE>N`F8f<{_ -M@^MEhcVy#omh=bI-rl&{j_4Y)d2=oOFWB>&L0to-Z_Ce;SSLEx{oG{4aHr^2 -iyiLDUBh#^}_A@_Ma7HJnE>N`F8f<{_M@^MEhcVy#omh=bI-rl&{j_4Y)e~4lXkl -q?LTqVnWK(5fY*ct@WCQ{L2V!Y-V{d7000jX82>-+OLFT7doUbhHyi-Y#=22)QEgSwg-+OLFT7doUbh -Hyi-Y#=22)QEgSwg?<6X>I@ -o0RjmB!}dYur&r|b)0{BK<2K$A2E0wbR3p=|s`fKKS8xN>G?42=b&6>T7_z0LJs9 -vI3^Q`9-kMwahgh8>BYgn|Y-w?IX=DHe0RjmB!}dYur&r|b)0{BK<2K$A2E0wbR3 -p=|s`fKKS8xN>G?42=b&6>T7_z0LJs9vI3^Q`9-kMwahgh8>BYhB9Lug@XZc}Ara -%FT=WnpXt0sseMX>?<6X>I@o0RjmB!}dYur&r|b)0{BK<2K$A2E0wbR3p=|s`fKK -S8!+<>%7&o7^|1Fn59cLW!>7R25;!;B%7&o7^|1Fn59cLW!>7R25;!;B#Kd;Rz-U=aO9W+B0S0Voa -dl~A00jX8^=uPjBlbC`N(qzPM@Gr{imSMTSY5T*7C#t%#3&jHqk=;7%h%D+p%U7S -;b1RT)c9`>#Kd;Rz-U=aO9W+B +iJgSuRQIwo56*Y%|U3<#tq*{wf@d1AT00000000300000000005ba`-Pa{*k#l*{ +2eNVZs$P`iWxk*d~c1>fc?gV4`us-R#$-%UIAG)ln +dNx^Mj&7BA{g&0cZZ29GVDIV`yboKLkF4~iax8KK|47hp-b9G{KWpqzw00aU61a5C`WdHyG0R(ezZDjx +j0RdX>E|f2p(_k}cRI2`s;OzJvOQ)7*cPm|)KXo;shkgrZY;R&=Y*cx0Wpe-u0oC +r34oQf!Y4K`P(FaQVwIle)QgI&pHa%8Z1>xis%K^ujrr2XPctjrBQEn_gi@y%2uu +6czw;j3Za^^pA<|F_B000000093000000000VacWz~5RC#b^a{vkfhyLPaScq)s9 +KMExvw34D6J>+NwrBxfixd_%u|$Wt0XWJO;DsW`<2iyxl(NH_SanmT=*kQZ;pml# +x`}ri^8f$<000000RI300000001S3vY-Mg^c~p6DWpe-t0Y>fS!w4MxxaL=+DqP^ +k2!wz9AHH68xp8!<%Jqp^&Hw-a000000RI300000000(DfZe??6a{;SD{|dyAYDE +zER9^-pDoqKDkX2Z-)7v*JaEw{tOhXD~cywiMb7^mGa{vkfWOW`wsTH9-LlJ`2|A +y5Z(?oEikl{+~pis;@Q*TJ#0cNz9gpb5|Ibh#3lIwO7kh2b~5Yat1R4r0u5eSq}a +R2}S000000RI300000001I?-VQzD2bZKvHa{vkfG*S<)6P6lYy(#<=BR_>s@(?%# +f7ArN-=Rj?7Ns(10lmj>c*;HH-+nx*l=M-QoGleKhk#vs%IKt8i%IbTe*gdg0000 +00RI300000000ne;aAk7=T*H*h;X6pSSd&n@gaDDM)@TLa<|~8H&uOZlU_akd26J +O_X>fD_oXH(Bh}d)dr!!swSvHgl+-dWJqCz5|Wf}oz{+b+`22*2lX>fD|0RaVJY; +{&`00jX7qWbEda9o^`%-h{Y?T>Kfj`b9SKFB^?WVLEr!&9xW3sZDqbY)XxXk~3-1 +OxyJWMyM)VRB(~X?A4*00039W_507X<}?;00jX7`Sh#^X0AbZX4L%*5q$))*;M@w +XI>IJVg&1PPwC}G0t$0Lb#i5700jX8NU3b>%M}yz;kwbCmqWQ?a(0yP=wbe +0q{)>8+xQm0YXqYdo~D%m7H6OD0<^0n_2##VWXRdjy=DB@qgYOj0}5eubYWv?ZDn +qB00jX7LNH;4h{)8d6ed8&{mBV=@3I +k?lb^+R(Q4?4eR(6nw`@6CZd7@2WdSr&53UoI +8eY9A{1GERg--GiI0S#x1is&)M%fmnGH3{GWprU=VRT^u;b~{_$H8YPU!!A-5yM5 +8(94FP(7*JmC%?~bN>dRB2WM<=Vqt7^0owP`H}~XwW|nkt{7-&IWbpPi(wX$0pXU +qF<#0Z84+d#&aCLNZ0jZ*TSChz_$|Xx}eRkFNAr%^eLl(1e@}~9=0-ijXfD2)Bb7 +^O8ZDnqBa{-_NKl5dJcM298OG8$&jbSVxRABjfu-DqG-s#fI$h8S}VQgh?V`*h`0 +o{dW0B>Pr5ftu@@z<*O39}j`u&O7io3b$Is?RA$O$T>rbZ%vHa{-h0V0dsu5sjwL +jgQcrOsaG1F{QvR+LMR3-^ZN{xOxV2V{&P5bODq1V0dsu5sjwLjgQcrOsaG1F{Qv +R+LMR3-^ZN{xOxy&a$#@6CZbEf#WNc*y0tjhtaCLM|VQ>KznP+6nwW~k}RP! +NmuV?G015$>$mV(;bz)!CmQ +_M(k?Vd!kfCo{nDM?)_qK{868FUcCeJU3<#S4?QFnz{&xo9|Yu2bKb!28ehQ8E-B +WCD{0RR9100000|Nj60000005L9wuZgXjLX>V>*V`ybVZDn*}WMOn+0!XQB +?8_As^WnPDotHzoVsdtr@aSRwVWi2G1l#x)ziR}e6rQG)02XJT?*g=|B=zREie$* +y(7k2+*P~cYjR$9JZ(?C=a{vkf)$WoGNrn+a000000RI300000000 +wDpaCLNZ015$z{^Dg=h-~N_zJ`Red1EINWrM}GXaQb}6c#qIM2EQnHo-KZ`k;Xmr +`<4sJYKN!!u{G5u+^j1lf!PF4>GEG0000000000{{R30000003t@9}X=iS2Wo~qH +015$z{^Dg=h-~N_zJ`Red1EINWrM}GXaQb}6c#qIM2EQnHo-KZ`k;Xmr`<4sJYKN +!!u{G5u+^j1lf!PF4>GEG0000000000{{R300000033g#@Wo~0>Wpe-t0Y>fS!w4 +MxxaL=+DqP^k2!wz9AHH68xp8!<%Jqp^&Hw-a000000RI300000001i}gVQzD2bZ +KvHRC#b^1pxp60uEGpaAiYpZEb0EZDnqB1OosEXJu|>b7^w`1pxtHPfp^mpD;#5t +2l9$ndf%REf13|ADS+2w>k^=#h!x!3UqQ|ZgXjLX>V=-1p)z|2rNlD$O59e#ogQs +B77jPl+h5j^*S;EG*S<)6P6lYy(#<=BR_>s@(?%#f7ArN-=Rj?7Ns( +10tsb!bY*UHX>V=-1p)z|2rNlD$O59e#ogQsB77jPl+h5j^*S;EWOW +`wsTH9-LlJ`2|Ay5Z(?oEikl{+~pis;@Q*TJ#8dQ03Wn@8fb7^O8b3$xsZe&wsVQ +f@*P;_zx1ON+UWn*k%a$$67c4Yts0RRXAIVbbqN^4g)WDG0#SSGl-+Q@e<+6H_!d +>A}?>eLb#i5700jX +62myf}=a&wUzgq*nHzp%O_gxL;Ro0E2(00 +00000000|Nj60000008B}?2Wn@8fb7^O8b3$xsZe&wsVQf@*X=DTh01ISgV{Bn^V +RUJBWdH>M00;q-z?57PmRE;x*JyQZ??N1%-?X%h&UrM00;s9(nscpRQseH2M_=0H1c!=>Px#000000RR60000000RIYMbaY{3Xl-R~bN~eb00 +;reGP>7z&ZQf?Gib;@a|Hna2?0j!=EDd +a{kY~=q$*tC#t4Le{2#tvcDZqMsmk?c;Wd#8M000eFX>@L7b8|s%V`y)31_BCqX>@L7b8}B}WC +6k+?A!p;zT)eT0-JI=`>_zfHkawo185nP6{Z9SY03$AX>@L7b8|^#0f}o^CC$c=U +szhlV5m?Ru@{iVU*wrVdeH+Q@FPbX@d{UIbZ%vHb5C+)1OfmDZ*D_qVQFpv1pxsL +zqsuE4_HHJVQFqbZewU~a#Lk=1OfmDVrg +_^Z)t7-1pxut;9)08u!CeLKyU8YAgL0^vpn5O4pIusYuPIV!b?p725f0@b!lV(1p +xut;9)08u!CeLKyU8YAgL0^vpn5O4pIusYuPIV!b?pQSVL%GX>LMnX>MdwWnpYoc +u;h51OfmDVrg_^Z)t7-1pxw{8dk~w9gt+Ers0yQiuv;nUcXIEE-O$7b}poCzU2-^ +C#Wt^wA&hNfbvI8l{tqo-}{|djZ8YAkJtUQVz<=+25f0@b!lV(1pxw{8dk~w9gt+ +Ers0yQiuv;nUcXIEE-O$7b}poCzU2-^C#Wt^wA&hNfbvI8l{tqo-}{|djZ8YAkJt +UQVz<>3SVL%GX>LMnX>MdwWnpYocxhw=0sseMX>?<6X>I@o0Ro;HR>}VzkYuK&;g +YF}`ST85zfDapD^Lh_E~IU~}VzkYuK&;gYF}`ST85zfDapD^Lh_E~IU~$vY*ct@WCQ{ +L2V!Y-V{d7000jX8o*Guk{~eHIrl#SNsfzjY4qm@aO)e`?2zD-{ZNB9W1JyK;>qK +>mX$cszrKCL=@F5H{a;)B(Tlt4rog*WC0S0Voadl~A00jX8o*Guk{~eHIrl#SNsf +zjY4qm@aO)e`?2zD-{ZNB9W1JyK;>qK>mX$cszrKCL=@F5H{a;)B(Tlt4rog*WC5 +LiQKVQFqtWn*$>bW>$vYy<)T2V!Y-V{d7000jX8o*Guk{~eHIrl#SNsfzjY4qm@a +O)e`?2zD-{ZNB9WXc_Cg)w39@m$R6qOEzWQ+NTC@=;?<6X>I@o0Rr`G6JjIwIj +2eqliWu}$@z+_xPw?-wb>Rw7=FYk8VaL=Li5Yl(a@n1+Ku60FILp}Zw|!7cE!MGS +xid=WmW+OY-w?IX=DHe0Rr`G6JjIwIj2eqliWu}$@z+_xPw?-wb>Rw7=FYk8VaL= +Li5Yl(a@n1+Ku60FILp}Zw|!7cE!MGSxid=WmW -----END STRICT TYPE LIB----- diff --git a/stl/RGB@0.1.0.stl b/stl/RGB@0.1.0.stl index d231b66d53d1a7e48859987763d901f6014a92b0..56c2b8b8431d4f3659351bacd08441804875a9e8 100644 GIT binary patch delta 1244 zcmbO-fpOjhMpot^cPF;Vc~%M&D|tdv*B#WFa#woRDdvT91-x#S+}I@bSn%cJm~tMW zWn9f0DtMgpb8|CG!cvPe(<W(7ah3-d4KeOVs7FTvpHiifS=vOGVYIl-eI z`rJfnLe=ZXn|~=y;v&kt$!Byq2`jYKQ_x_`%qu7@DP|(*6lvz+h&`+B;=&xp1XDz8LNG)cJIXva`Lu-$15t9RU zw=hgxbuEMS{xj|73+FReEl9AxA2fNLmB!@r<~<5g@ARhVPrIC8oEfs}U+;rAKV-d^ zPfIJ;j-6>=YPzt!ZgaK8b4FrK-Mr2!okN&41mpx3Mn<;clA_Gy5(ZYr$%3kill!a` zHj6qRAR;3;x+>@}vgKqJmS&~^brVd#lO0{131e6$nf3SXk^FEM&wE*VD{iV~nSa=*-OA&fpPQRm5|&z&nN~UZ zzLNqEcW_BjW^zeLWkG83Glp%R&EdzWK*-X`oLt(36}{n7m|VgoNLV2! zmx4NLenC-c2@@fkH^1RZ5m6xI+sOs;8pJ44*nC5tiCJM|v~7^uGHYXFsgTaVC-u`7 z@?>@2*WGwy$Cahlmnv3G+Wbpt5*JbCO+KT`Nm!w+o`MEjW?n&QNih>auh{D85@q7# zReHp^QJb?YF()-IIWv_A+Y96sCfn;1>!;%6qRfI4f_~b(L4P$nH&+QT=>=C7m!#%S z7F1Q7{NG7oa*CD4 ^ ..0xff ExtensionSchema} , transitions {TransitionType -> ^ ..0xff TransitionSchema} - , typeSystem StrictTypes.TypeSystem#panel-data-lazarus + , types Types , script Script @mnemonic(garcia-smoke-ozone) data SchemaId : [Byte ^ 32] -@mnemonic(archive-number-arnold) +@mnemonic(zebra-amanda-linear) data SchemaSchema : ffv Ffv , flags ReservedBytes1 , subsetOf Schema? @@ -439,7 +439,7 @@ data SchemaSchema : ffv Ffv , genesis GenesisSchema , extensions {ExtensionType -> ^ ..0xff ExtensionSchema} , transitions {TransitionType -> ^ ..0xff TransitionSchema} - , typeSystem StrictTypes.TypeSystem#panel-data-lazarus + , types Types , script Script @mnemonic(venus-trust-north) @@ -493,6 +493,9 @@ data TypedAssignsBlindSealTxid : declarative [AssignVoidStateBlindSealTxid] | structured [AssignRevealedDataBlindSealTxid] | attachment#255 [AssignRevealedAttachBlindSealTxid] +@mnemonic(titanic-front-courage) +data Types : strict#1 StrictTypes.TypeSystem#panel-data-lazarus + @mnemonic(andy-mango-brother) data Valencies : {ValencyType ^ ..0xff} diff --git a/stl/Schema.vesper b/stl/Schema.vesper index 9d9db90a..38fd7a64 100644 --- a/stl/Schema.vesper +++ b/stl/Schema.vesper @@ -100,45 +100,46 @@ Schema rec max is U16 valencies set len=0..MAX8 element is U16 aka=ValencyType - typeSystem map len=0..MAX24 aka=TypeSystem - key bytes len=32 aka=SemId - TySemId union -- mapped to - primitive is U8 wrapped aka=Primitive tag=0 - unicode is Unit tag=1 - enum set len=1..MAX8 wrapped aka=EnumVariants tag=2 - Variant rec - name ascii len=1..100 aka=VariantName aka=Ident charset=AlphaNumLodash - tag is U8 - union map len=0..MAX8 wrapped aka=UnionVariantsSemId tag=3 - key is U8 - VariantInfoSemId rec -- mapped to - name ascii len=1..100 aka=VariantName aka=Ident charset=AlphaNumLodash - ty bytes len=32 aka=SemId - tuple list len=1..MAX8 wrapped aka=UnnamedFieldsSemId tag=4 - element bytes len=32 aka=SemId - struct list len=1..MAX8 wrapped aka=NamedFieldsSemId tag=5 - FieldSemId rec - name ascii len=1..100 aka=FieldName aka=Ident charset=AlphaNumLodash - ty bytes len=32 aka=SemId - array tuple tag=6 - _ bytes len=32 aka=SemId - _ is U16 - list tuple tag=7 - _ bytes len=32 aka=SemId - Sizing rec - min is U64 - max is U64 - set tuple tag=8 - _ bytes len=32 aka=SemId - Sizing rec - min is U64 - max is U64 - map tuple tag=9 - _ bytes len=32 aka=SemId - _ bytes len=32 aka=SemId - Sizing rec - min is U64 - max is U64 + types union -- Types + strict map len=0..MAX24 wrapped aka=TypeSystem tag=0 + key bytes len=32 aka=SemId + TySemId union -- mapped to + primitive is U8 wrapped aka=Primitive tag=0 + unicode is Unit tag=1 + enum set len=1..MAX8 wrapped aka=EnumVariants tag=2 + Variant rec + name ascii len=1..100 aka=VariantName aka=Ident charset=AlphaNumLodash + tag is U8 + union map len=0..MAX8 wrapped aka=UnionVariantsSemId tag=3 + key is U8 + VariantInfoSemId rec -- mapped to + name ascii len=1..100 aka=VariantName aka=Ident charset=AlphaNumLodash + ty bytes len=32 aka=SemId + tuple list len=1..MAX8 wrapped aka=UnnamedFieldsSemId tag=4 + element bytes len=32 aka=SemId + struct list len=1..MAX8 wrapped aka=NamedFieldsSemId tag=5 + FieldSemId rec + name ascii len=1..100 aka=FieldName aka=Ident charset=AlphaNumLodash + ty bytes len=32 aka=SemId + array tuple tag=6 + _ bytes len=32 aka=SemId + _ is U16 + list tuple tag=7 + _ bytes len=32 aka=SemId + Sizing rec + min is U64 + max is U64 + set tuple tag=8 + _ bytes len=32 aka=SemId + Sizing rec + min is U64 + max is U64 + map tuple tag=9 + _ bytes len=32 aka=SemId + _ bytes len=32 aka=SemId + Sizing rec + min is U64 + max is U64 script union -- Script aluVm rec wrapped tag=0 -- AluScript libs map len=0..MAX8 From f65566678d688dff0b9bd987bfb4133adf32bcda Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Mon, 11 Mar 2024 18:19:13 +0100 Subject: [PATCH 2/4] schema: add ASCII armoring support --- src/schema/schema.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/schema/schema.rs b/src/schema/schema.rs index e4979d26..22456c50 100644 --- a/src/schema/schema.rs +++ b/src/schema/schema.rs @@ -26,6 +26,7 @@ use std::str::FromStr; use amplify::confinement::{TinyOrdMap, TinyOrdSet}; use amplify::{ByteArray, Bytes32}; +use armor::StrictArmor; use baid58::{Baid58ParseError, Chunking, FromBaid58, ToBaid58, CHUNKING_32}; use commit_verify::{CommitEncode, CommitEngine, CommitId, CommitmentId, DigestExt, Sha256}; use strict_encoding::{StrictDecode, StrictDeserialize, StrictEncode, StrictSerialize, StrictType}; @@ -227,6 +228,13 @@ impl Schema { } } +impl StrictArmor for Schema { + type Id = SchemaId; + const PLATE_TITLE: &'static str = "RGB SCHEMA"; + + fn armor_id(&self) -> Self::Id { self.schema_id() } +} + #[cfg(test)] mod test { use strict_encoding::StrictDumb; From be751660fb5408c6df0ff0ac10e9d15f362f2f9b Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Mon, 11 Mar 2024 22:38:24 +0100 Subject: [PATCH 3/4] vm: improve ASCII armor support --- src/vm/script.rs | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/vm/script.rs b/src/vm/script.rs index d11fe5f0..524e38ab 100644 --- a/src/vm/script.rs +++ b/src/vm/script.rs @@ -133,7 +133,9 @@ pub struct AluLib(pub aluvm::library::Lib); #[cfg(feature = "serde")] mod _serde { - use serde_crate::ser::Error; + use aluvm::library::Lib; + use armor::AsciiArmor; + use serde_crate::de::Error; use serde_crate::{Deserialize, Deserializer, Serialize, Serializer}; use super::*; @@ -141,18 +143,25 @@ mod _serde { impl Serialize for AluLib { fn serialize(&self, serializer: S) -> Result where S: Serializer { - let mut buf = Vec::::new(); - self.print_disassemble::(&mut buf) - .map_err(S::Error::custom)?; - let s = String::from_utf8(buf).map_err(S::Error::custom)?; - serializer.serialize_str(&s) + if serializer.is_human_readable() { + serializer.serialize_str(&self.0.to_ascii_armored_string()) + } else { + Serialize::serialize(&self.0, serializer) + } } } impl<'de> Deserialize<'de> for AluLib { - fn deserialize(_deserializer: D) -> Result + fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { - todo!() + if deserializer.is_human_readable() { + let s: String = Deserialize::deserialize(deserializer)?; + let lib = Lib::from_ascii_armored_str(&s).map_err(D::Error::custom)?; + Ok(lib.into()) + } else { + let lib: Lib = Deserialize::deserialize(deserializer)?; + Ok(lib.into()) + } } } } From 5232162d8ba0bb6373646e4eadda269608b4c924 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Wed, 13 Mar 2024 13:00:03 +0100 Subject: [PATCH 4/4] chore: update dependencies --- Cargo.lock | 22 ++++++++++++---------- Cargo.toml | 10 ++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2813e4c..f722ead7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,8 +4,9 @@ version = 3 [[package]] name = "aluvm" -version = "0.11.0-beta.4" -source = "git+https://github.com/AluVM/rust-aluvm?branch=armor#3bf009122c09a90df495049e0182712c675c2b26" +version = "0.11.0-beta.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2032d213fd6b80b26217efb9846b273671acff3f696ada7e0314c6af2b4c3275" dependencies = [ "amplify", "ascii-armor", @@ -201,7 +202,7 @@ dependencies = [ [[package]] name = "bp-consensus" version = "0.11.0-beta.4" -source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" +source = "git+https://github.com/BP-WG/bp-core?branch=master#1339f9fd96bbba0b3b949c65af1598496ba930eb" dependencies = [ "amplify", "chrono", @@ -215,7 +216,7 @@ dependencies = [ [[package]] name = "bp-core" version = "0.11.0-beta.4" -source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" +source = "git+https://github.com/BP-WG/bp-core?branch=master#1339f9fd96bbba0b3b949c65af1598496ba930eb" dependencies = [ "amplify", "bp-consensus", @@ -233,7 +234,7 @@ dependencies = [ [[package]] name = "bp-dbc" version = "0.11.0-beta.4" -source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" +source = "git+https://github.com/BP-WG/bp-core?branch=master#1339f9fd96bbba0b3b949c65af1598496ba930eb" dependencies = [ "amplify", "base85", @@ -247,7 +248,7 @@ dependencies = [ [[package]] name = "bp-seals" version = "0.11.0-beta.4" -source = "git+https://github.com/BP-WG/bp-core?branch=armor#628854dff6f82f873d6389e1ec8c7ec0b7d00c2d" +source = "git+https://github.com/BP-WG/bp-core?branch=master#1339f9fd96bbba0b3b949c65af1598496ba930eb" dependencies = [ "amplify", "baid58", @@ -301,7 +302,7 @@ dependencies = [ [[package]] name = "commit_encoding_derive" version = "0.11.0-beta.4" -source = "git+https://github.com/LNP-BP/client_side_validation?branch=armor#78f22a51b87115869f454ed0516a1bcdd8994db4" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=master#e963d5df29e9c04cb24dfc7d0b3553d286bb1986" dependencies = [ "amplify", "amplify_syn", @@ -313,7 +314,7 @@ dependencies = [ [[package]] name = "commit_verify" version = "0.11.0-beta.4" -source = "git+https://github.com/LNP-BP/client_side_validation?branch=armor#78f22a51b87115869f454ed0516a1bcdd8994db4" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=master#e963d5df29e9c04cb24dfc7d0b3553d286bb1986" dependencies = [ "amplify", "commit_encoding_derive", @@ -793,8 +794,9 @@ dependencies = [ [[package]] name = "strict_types" -version = "2.7.0-beta.1" -source = "git+https://github.com/strict-types/strict-types?branch=armor#00741ba09189536d8cdaf048a7f17795393ee382" +version = "2.7.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c32716de4b99b0e8fb0c114e99b6929613e8d7302999c6b8c77251783923ad" dependencies = [ "amplify", "ascii-armor", diff --git a/Cargo.toml b/Cargo.toml index de1439a8..607098da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ required-features = ["stl"] amplify = { version = "~4.6.0", features = ["rand"] } ascii-armor = "0.2.0" strict_encoding = "~2.7.0-beta.1" -strict_types = { version = "~2.7.0-beta.1", features = ["armor"] } +strict_types = { version = "~2.7.0-beta.2", features = ["armor"] } aluvm = { version = "~0.11.0-beta.4", features = ["std", "ascii-armor"] } commit_verify = { version = "~0.11.0-beta.4", features = ["rand", "derive"] } single_use_seals = "~0.11.0-beta.4" @@ -60,10 +60,8 @@ getrandom = { version = "0.2", features = ["js"] } wasm-bindgen-test = "0.3" [package.metadata.docs.rs] -features = [ "all" ] +features = ["all"] [patch.crates-io] -strict_types = { git = "https://github.com/strict-types/strict-types", branch = "armor" } -aluvm = { git = "https://github.com/AluVM/rust-aluvm", branch = "armor" } -commit_verify = { git = "https://github.com/LNP-BP/client_side_validation", branch = "armor" } -bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "armor" } +commit_verify = { git = "https://github.com/LNP-BP/client_side_validation", branch = "master" } +bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "master" }