diff --git a/Cargo.lock b/Cargo.lock index 2e4cc761..c8a58122 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,8 +5,7 @@ version = 3 [[package]] name = "aluvm" version = "0.11.0-beta.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10be187b383247e1902aa5a415f76ffc9a04f197829c46b9ccb6da3582e394f" +source = "git+https://github.com/AluVM/rust-aluvm?branch=v0.11#084d3b96dde13b666917783849c30e35bd150548" dependencies = [ "amplify", "baid58", @@ -23,9 +22,9 @@ dependencies = [ [[package]] name = "amplify" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8629db306c0bbeb0a402e2918bdcf0026b5ddb24c46460f3bf5410b350d98710" +checksum = "f8dd50780fa78a67bae725dd164bc993500656112815a9301fd8b797e9006803" dependencies = [ "amplify_apfloat", "amplify_derive", @@ -37,7 +36,7 @@ dependencies = [ "serde_json", "serde_yaml", "stringly_conversions", - "toml", + "toml 0.7.8", "wasm-bindgen", ] @@ -144,12 +143,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" -[[package]] -name = "base64" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" - [[package]] name = "base85" version = "2.0.0" @@ -196,7 +189,7 @@ dependencies = [ [[package]] name = "bp-consensus" version = "0.11.0-beta.3" -source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#02b26aeccf66c1c5a92427cd05550e49fde7f5eb" +source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#43c5ea00bdd538d4f2c1170a0c8fb2444c67da29" dependencies = [ "amplify", "chrono", @@ -210,7 +203,7 @@ dependencies = [ [[package]] name = "bp-core" version = "0.11.0-beta.3" -source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#02b26aeccf66c1c5a92427cd05550e49fde7f5eb" +source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#43c5ea00bdd538d4f2c1170a0c8fb2444c67da29" dependencies = [ "amplify", "bp-consensus", @@ -228,7 +221,7 @@ dependencies = [ [[package]] name = "bp-dbc" version = "0.11.0-beta.3" -source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#02b26aeccf66c1c5a92427cd05550e49fde7f5eb" +source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#43c5ea00bdd538d4f2c1170a0c8fb2444c67da29" dependencies = [ "amplify", "base85", @@ -242,7 +235,7 @@ dependencies = [ [[package]] name = "bp-seals" version = "0.11.0-beta.3" -source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#02b26aeccf66c1c5a92427cd05550e49fde7f5eb" +source = "git+https://github.com/BP-WG/bp-core?branch=v0.11#43c5ea00bdd538d4f2c1170a0c8fb2444c67da29" dependencies = [ "amplify", "baid58", @@ -284,9 +277,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", @@ -298,9 +291,8 @@ dependencies = [ [[package]] name = "commit_encoding_derive" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00033f14d67c4169d588f085ea2faeb7b610cf03a74d42ea09eeba31abef2047" +version = "0.11.0-beta.3" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=v0.11#ca6866221b9cdcd9d68297753cf75af57aa7ef86" dependencies = [ "amplify", "amplify_syn", @@ -312,8 +304,7 @@ dependencies = [ [[package]] name = "commit_verify" version = "0.11.0-beta.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e001679b9be6a5df24facdae179e6ba1cffb503c875d691eac024db8d0f8d1" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=v0.11#ca6866221b9cdcd9d68297753cf75af57aa7ef86" dependencies = [ "amplify", "commit_encoding_derive", @@ -349,9 +340,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -400,9 +391,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "js-sys", @@ -434,9 +425,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -457,9 +448,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520" dependencies = [ "equivalent", "hashbrown", @@ -473,9 +464,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -488,9 +479,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "log" @@ -549,18 +540,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.71" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -640,9 +631,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "secp256k1" -version = "0.28.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ "rand", "secp256k1-sys", @@ -683,29 +674,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.193" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" dependencies = [ "itoa", "ryu", @@ -733,9 +724,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.29" +version = "0.9.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15e0ef66bf939a7c890a0bf6d5a733c70202225f9888a89ed5c62298b019129" +checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e" dependencies = [ "indexmap", "itoa", @@ -767,8 +758,7 @@ dependencies = [ [[package]] name = "strict_encoding" version = "2.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa76decc8ac190a56ba7857c023b69ed52b781ed974c5a181eac62cdbfc99521" +source = "git+https://github.com/strict-types/strict-encoding?branch=ident#9c20b327178b449cbb24a18c7db65edeb50a9d5b" dependencies = [ "amplify", "half", @@ -779,8 +769,7 @@ dependencies = [ [[package]] name = "strict_encoding_derive" version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37064ec285e2a633465eb525c8698eea51373dee889fe310e0d32df8343e7f4f" +source = "git+https://github.com/strict-types/strict-encoding?branch=ident#9c20b327178b449cbb24a18c7db65edeb50a9d5b" dependencies = [ "amplify_syn", "heck", @@ -792,12 +781,11 @@ dependencies = [ [[package]] name = "strict_types" version = "1.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10cc45e67d452cfe0d87d4714c3250190d97479af3502bbd823651bfe0f505f" +source = "git+https://github.com/strict-types/strict-types?branch=vesper#b424b47eff526088417eccf85441211db4f953a1" dependencies = [ "amplify", "baid58", - "base64", + "base85", "half", "indexmap", "serde", @@ -805,7 +793,8 @@ dependencies = [ "serde_yaml", "sha2", "strict_encoding", - "toml", + "toml 0.8.9", + "vesper", ] [[package]] @@ -831,9 +820,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.43" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -842,34 +831,46 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.52" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.52" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", ] [[package]] name = "toml" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "c6a4b9e8023eb94392d3dca65d717c53abc5dad49c07cb65bb8fcd87115fa325" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.21.1", ] [[package]] @@ -883,9 +884,22 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "serde", @@ -918,6 +932,15 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "vesper" +version = "0.1.0" +source = "git+https://github.com/UBIDECO/vesper#18107cbbdffeb91d992dc7c76da0640aea152e8f" +dependencies = [ + "amplify", + "strict_encoding", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -926,9 +949,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -936,24 +959,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -963,9 +986,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -973,28 +996,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "wasm-bindgen-test" -version = "0.3.39" +version = "0.3.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cf9242c0d27999b831eae4767b2a146feb0b27d332d553e605864acd2afd403" +checksum = "139bd73305d50e1c1c4333210c0db43d989395b64a237bd35c10ef3832a7f70c" dependencies = [ "console_error_panic_hook", "js-sys", @@ -1006,20 +1029,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.39" +version = "0.3.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794645f5408c9a039fd09f4d113cdfb2e7eba5ff1956b07bcf701cf4b394fe89" +checksum = "70072aebfe5da66d2716002c729a14e4aec4da0e23cc2ea66323dac541c93928" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -1027,18 +1050,18 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1051,51 +1074,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.31" +version = "0.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a4882e6b134d6c28953a387571f1acdd3496830d5e36c5e3a1075580ea641c" +checksum = "a7cad8365489051ae9f054164e459304af2e7e9bb407c958076c8bf4aef52da5" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index d573d49c..f59cdd98 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ name = "rgbcore-stl" required-features = ["stl"] [dependencies] -amplify = { version = "~4.5.0", features = ["rand"] } +amplify = { version = "~4.5.1", features = ["rand"] } strict_encoding = "~2.6.2" strict_types = "~1.6.3" aluvm = { version = "~0.11.0-beta.2", features = ["std"] } @@ -62,4 +62,8 @@ wasm-bindgen-test = "0.3" features = [ "all" ] [patch.crates-io] +strict_encoding = { git = "https://github.com/strict-types/strict-encoding", branch = "ident" } +strict_types = { git = "https://github.com/strict-types/strict-types", branch = "vesper" } +commit_verify = { git = "https://github.com/LNP-BP/client_side_validation", branch = "v0.11" } bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "v0.11" } +aluvm = { git = "https://github.com/AluVM/rust-aluvm", branch = "v0.11" } diff --git a/src/bin/rgbcore-stl.rs b/src/bin/rgbcore-stl.rs index 39402a1c..fd5a8d90 100644 --- a/src/bin/rgbcore-stl.rs +++ b/src/bin/rgbcore-stl.rs @@ -20,23 +20,68 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::fs; + +use aluvm::stl::aluvm_stl; +use bp::stl::bp_core_stl; +use commit_verify::stl::commit_verify_stl; +use rgb::stl::bp_tx_stl; +use strict_types::stl::{std_stl, strict_types_stl}; use strict_types::typelib::parse_args; +use strict_types::SystemBuilder; fn main() { let (format, dir) = parse_args(); - rgb::stl::rgb_core_stl() - .serialize( - format, - dir, - "0.1.0", - Some( - " + let rgb = rgb::stl::rgb_core_stl(); + + rgb.serialize( + format, + dir.as_ref(), + "0.1.0", + Some( + " Description: Consensus layer for RGB smart contracts Author: Dr Maxim Orlovsky Copyright (C) 2023 LNP/BP Standards Association. All rights reserved. License: Apache-2.0", - ), - ) - .expect("unable to write to the file"); + ), + ) + .expect("unable to write to the file"); + + let std = std_stl(); + let tx = bp_tx_stl(); + let bp = bp_core_stl(); + let cv = commit_verify_stl(); + let st = strict_types_stl(); + let vm = aluvm_stl(); + + let sys = SystemBuilder::new() + .import(rgb) + .unwrap() + .import(vm) + .unwrap() + .import(bp) + .unwrap() + .import(tx) + .unwrap() + .import(cv) + .unwrap() + .import(st) + .unwrap() + .import(std) + .unwrap() + .finalize() + .expect("not all libraries present"); + + let dir = dir.unwrap_or_else(|| ".".to_owned()); + + let tt = sys.type_tree("RGB.Transition").unwrap(); + fs::write(format!("{dir}/Transition.vesper",), format!("{tt}")).unwrap(); + + let tt = sys.type_tree("RGB.Schema").unwrap(); + fs::write(format!("{dir}/Schema.vesper",), format!("{tt}")).unwrap(); + + let tt = sys.type_tree("RGB.AnchoredBundle").unwrap(); + fs::write(format!("{dir}/AnchoredBundle.vesper",), format!("{tt}")).unwrap(); } diff --git a/src/contract/assignments.rs b/src/contract/assignments.rs index 77587c45..ae3e707f 100644 --- a/src/contract/assignments.rs +++ b/src/contract/assignments.rs @@ -24,12 +24,10 @@ use core::cmp::Ordering; use core::fmt::Debug; use std::collections::BTreeSet; use std::hash::{Hash, Hasher}; -use std::{io, vec}; use amplify::confinement::{Confined, SmallVec, TinyOrdMap}; -use commit_verify::merkle::{MerkleLeaves, MerkleNode}; -use commit_verify::{CommitEncode, CommitStrategy, CommitmentId, Conceal}; -use strict_encoding::{StrictDumb, StrictEncode, StrictWriter}; +use commit_verify::Conceal; +use strict_encoding::{StrictDumb, StrictEncode}; use super::ExposedState; use crate::contract::seal::GenesisSeal; @@ -231,40 +229,6 @@ where Self: Clone } } -// We do not derive here since we omit serialization of the tag: all data are -// concealed, thus no tag is needed. -impl CommitEncode for Assign -where Self: Clone -{ - fn commit_encode(&self, e: &mut impl io::Write) { - match self { - Assign::Confidential { seal, state } => { - seal.commit_encode(e); - state.commit_encode(e); - } - Assign::ConfidentialState { seal, state } => { - seal.conceal().commit_encode(e); - state.commit_encode(e); - } - Assign::Revealed { seal, state } => { - seal.conceal().commit_encode(e); - state.commit_encode(e); - } - Assign::ConfidentialSeal { seal, state } => { - seal.commit_encode(e); - state.commit_encode(e); - } - } - } -} - -impl CommitmentId for Assign -where Self: Clone -{ - const TAG: [u8; 32] = *b"urn:lnpbp:rgb:owned-state:v1#23A"; - type Id = MerkleNode; -} - impl Assign { pub fn transmutate_seals(&self) -> Assign { match self { @@ -553,38 +517,6 @@ impl TypedAssigns { } } -impl CommitStrategy for TypedAssigns { - type Strategy = - commit_verify::strategies::Merklize<{ u128::from_be_bytes(*b"rgb:state:owned*") }>; -} - -impl MerkleLeaves for TypedAssigns { - type Leaf = MerkleNode; - type LeafIter<'tmp> = vec::IntoIter where Self: 'tmp; - - fn merkle_leaves(&self) -> Self::LeafIter<'_> { - match self { - TypedAssigns::Declarative(vec) => vec - .iter() - .map(AssignRights::commitment_id) - .collect::>(), - TypedAssigns::Fungible(vec) => vec - .iter() - .map(AssignFungible::commitment_id) - .collect::>(), - TypedAssigns::Structured(vec) => vec - .iter() - .map(AssignData::commitment_id) - .collect::>(), - TypedAssigns::Attachment(vec) => vec - .iter() - .map(AssignAttach::commitment_id) - .collect::>(), - } - .into_iter() - } -} - impl TypedAssigns { pub fn transmutate_seals(&self) -> TypedAssigns { match self { @@ -629,18 +561,6 @@ impl Default for Assignments { fn default() -> Self { Self(empty!()) } } -impl CommitEncode for Assignments { - fn commit_encode(&self, mut e: &mut impl io::Write) { - let w = StrictWriter::with(u32::MAX as usize, &mut e); - self.0.len_u8().strict_encode(w).ok(); - for (ty, state) in &self.0 { - let w = StrictWriter::with(u32::MAX as usize, &mut e); - ty.strict_encode(w).ok(); - state.commit_encode(e); - } - } -} - impl Assignments { pub fn transmutate_seals(&self) -> Assignments { Assignments( diff --git a/src/contract/attachment.rs b/src/contract/attachment.rs index 248a3244..e50eaaf9 100644 --- a/src/contract/attachment.rs +++ b/src/contract/attachment.rs @@ -67,8 +67,6 @@ impl AttachId { #[derive(Clone, PartialOrd, Ord, PartialEq, Eq, Hash, Debug)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(conceal, strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -128,8 +126,6 @@ impl Conceal for RevealedAttach { #[wrapper(Deref, BorrowSlice, Hex, Index, RangeOps)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), diff --git a/src/contract/bundle.rs b/src/contract/bundle.rs index 0da66199..d708424a 100644 --- a/src/contract/bundle.rs +++ b/src/contract/bundle.rs @@ -21,13 +21,12 @@ // limitations under the License. use std::collections::BTreeMap; -use std::io::Write; use amplify::confinement::{Confined, U16}; use amplify::{Bytes32, Wrapper}; use bp::Vout; -use commit_verify::{mpc, CommitEncode, CommitmentId}; -use strict_encoding::{StrictDumb, StrictEncode, StrictWriter}; +use commit_verify::{mpc, CommitEncode, CommitEngine, CommitId, CommitmentId, DigestExt, Sha256}; +use strict_encoding::{StrictDumb, StrictEncode}; use super::OpId; use crate::{Transition, LIB_NAME_RGB}; @@ -51,6 +50,14 @@ pub struct BundleId( Bytes32, ); +impl From for BundleId { + fn from(hasher: Sha256) -> Self { hasher.finish().into() } +} + +impl CommitmentId for BundleId { + const TAG: &'static str = "urn:lnpbp:rgb:bundle#2024-02-03"; +} + impl From for mpc::Message { fn from(id: BundleId) -> Self { mpc::Message::from_inner(id.into_inner()) } } @@ -73,15 +80,9 @@ pub struct TransitionBundle { } impl CommitEncode for TransitionBundle { - fn commit_encode(&self, e: &mut impl Write) { - let w = StrictWriter::with(u32::MAX as usize, e); - self.input_map.strict_encode(w).ok(); - } -} + type CommitmentId = BundleId; -impl CommitmentId for TransitionBundle { - const TAG: [u8; 32] = *b"urn:lnpbp:rgb:bundle:v1#20230306"; - type Id = BundleId; + fn commit_encode(&self, e: &mut CommitEngine) { e.commit_to(&self.input_map); } } impl StrictDumb for TransitionBundle { @@ -94,5 +95,5 @@ impl StrictDumb for TransitionBundle { } impl TransitionBundle { - pub fn bundle_id(&self) -> BundleId { self.commitment_id() } + pub fn bundle_id(&self) -> BundleId { self.commit_id() } } diff --git a/src/contract/data.rs b/src/contract/data.rs index a4eed1d5..b3750339 100644 --- a/src/contract/data.rs +++ b/src/contract/data.rs @@ -22,13 +22,12 @@ use core::fmt::{self, Debug, Formatter}; use std::cmp::Ordering; -use std::io::Write; use amplify::confinement::SmallBlob; use amplify::hex::ToHex; use amplify::{Bytes32, Wrapper}; use bp::secp256k1::rand::{random, Rng, RngCore}; -use commit_verify::{CommitEncode, CommitVerify, Conceal, StrictEncodedProtocol}; +use commit_verify::{CommitVerify, Conceal, StrictEncodedProtocol}; use strict_encoding::{StrictSerialize, StrictType}; use super::{ConfidentialState, ExposedState}; @@ -39,8 +38,6 @@ use crate::{StateCommitment, StateData, StateType, LIB_NAME_RGB}; #[display("void")] #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "serde_crate"))] pub struct VoidState(()); @@ -65,8 +62,6 @@ impl Conceal for VoidState { #[wrapper(Deref, AsSlice, BorrowSlice, Hex)] #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "serde_crate"))] pub struct DataState(SmallBlob); impl StrictSerialize for DataState {} @@ -116,13 +111,6 @@ impl Conceal for RevealedData { fn conceal(&self) -> Self::Concealed { ConcealedData::commit(self) } } -impl CommitEncode for RevealedData { - fn commit_encode(&self, e: &mut impl Write) { - e.write_all(&self.value).ok(); - e.write_all(&self.salt.to_le_bytes()).ok(); - } -} - impl PartialOrd for RevealedData { fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } } @@ -154,8 +142,6 @@ impl Debug for RevealedData { #[wrapper(Deref, BorrowSlice, Hex, Index, RangeOps)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB, rename = "ConcealedData")] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), diff --git a/src/contract/fungible.rs b/src/contract/fungible.rs index c3571e67..cf89a7f0 100644 --- a/src/contract/fungible.rs +++ b/src/contract/fungible.rs @@ -36,7 +36,6 @@ use core::num::ParseIntError; use core::ops::Deref; use core::str::FromStr; use std::io; -use std::io::Write; use amplify::confinement::U8; use amplify::hex::ToHex; @@ -46,7 +45,7 @@ use amplify::{hex, Array, Bytes32, Wrapper}; use bp::secp256k1::rand::thread_rng; use chrono::{DateTime, Utc}; use commit_verify::{ - CommitEncode, CommitVerify, CommitmentProtocol, Conceal, DigestExt, Sha256, UntaggedProtocol, + CommitVerify, CommitmentProtocol, Conceal, DigestExt, Sha256, UntaggedProtocol, }; use secp256k1_zkp::rand::{Rng, RngCore}; use secp256k1_zkp::SECP256K1; @@ -337,15 +336,6 @@ impl Conceal for RevealedValue { fn conceal(&self) -> Self::Concealed { ConcealedValue::commit(self) } } -// We need this manual implementation while conceal procedure is inaccessible -// w/o bulletproofs operational -impl CommitEncode for RevealedValue { - fn commit_encode(&self, e: &mut impl Write) { - let commitment = PedersenCommitment::commit(self); - commitment.commit_encode(e); - } -} - impl PartialOrd for RevealedValue { fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } } @@ -364,8 +354,6 @@ impl Ord for RevealedValue { #[wrapper(Deref, FromStr, Display, LowerHex)] #[derive(StrictType)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -468,7 +456,6 @@ impl CommitmentProtocol for PedersenProtocol {} #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB, rename = "ConcealedFungible")] -#[derive(CommitEncode)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -478,7 +465,6 @@ pub struct ConcealedValue { /// Pedersen commitment to the original [`FungibleState`]. pub commitment: PedersenCommitment, /// Range proof for the [`FungibleState`] not exceeding type boundaries. - #[commit_encode(skip)] pub range_proof: RangeProof, } @@ -534,28 +520,10 @@ impl ConcealedValue { #[cfg(test)] mod test { - use std::collections::HashSet; - use amplify::ByteArray; use super::*; - #[test] - fn commitments_determinism() { - let tag = AssetTag::from_byte_array([1u8; 32]); - - let value = RevealedValue::with_rng(15, &mut thread_rng(), tag); - - let generators = (0..10) - .map(|_| { - let mut val = vec![]; - value.commit_encode(&mut val); - val - }) - .collect::>(); - assert_eq!(generators.len(), 1); - } - #[test] fn pedersen_blinding_mismatch() { let mut r = thread_rng(); diff --git a/src/contract/global.rs b/src/contract/global.rs index 1cf4f4c1..c0119fc4 100644 --- a/src/contract/global.rs +++ b/src/contract/global.rs @@ -61,8 +61,6 @@ impl IntoIterator for GlobalValues { #[wrapper_mut(DerefMut)] #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), diff --git a/src/contract/operations.rs b/src/contract/operations.rs index 38e0c027..83fd4261 100644 --- a/src/contract/operations.rs +++ b/src/contract/operations.rs @@ -29,7 +29,7 @@ use amplify::confinement::{SmallBlob, TinyOrdMap, TinyOrdSet}; use amplify::hex::{FromHex, ToHex}; use amplify::{hex, ByteArray, Bytes32, FromSliceError, Wrapper}; use baid58::{Baid58ParseError, Chunking, FromBaid58, ToBaid58, CHUNKING_32CHECKSUM}; -use commit_verify::{mpc, CommitmentId, Conceal}; +use commit_verify::{mpc, CommitId, CommitmentId, Conceal, DigestExt, Sha256}; use strict_encoding::{StrictDeserialize, StrictEncode, StrictSerialize}; use crate::schema::{self, ExtensionType, OpFullType, OpType, SchemaId, TransitionType}; @@ -43,8 +43,6 @@ use crate::{ #[wrapper_mut(DerefMut)] #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -64,8 +62,6 @@ impl<'a> IntoIterator for &'a Valencies { #[wrapper_mut(DerefMut)] #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -85,8 +81,6 @@ impl<'a> IntoIterator for &'a Redeemed { #[wrapper_mut(DerefMut)] #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -142,6 +136,14 @@ pub struct OpId( Bytes32, ); +impl From for OpId { + fn from(hasher: Sha256) -> Self { hasher.finish().into() } +} + +impl CommitmentId for OpId { + const TAG: &'static str = "urn:lnpbp:rgb:operation#2024-02-03"; +} + impl FromStr for OpId { type Err = hex::Error; fn from_str(s: &str) -> Result { Self::from_hex(s) } @@ -266,6 +268,7 @@ pub trait Operation { #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] #[derive(CommitEncode)] +#[commit_encode(strategy = conceal, id = OpId)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -278,6 +281,7 @@ pub struct Genesis { pub alt_layers1: AltLayer1Set, pub metadata: SmallBlob, pub globals: GlobalState, + // TODO: Merklize assignments for the commitment pub assignments: Assignments, pub valencies: Valencies, } @@ -289,6 +293,7 @@ impl StrictDeserialize for Genesis {} #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] #[derive(CommitEncode)] +#[commit_encode(strategy = conceal, id = OpId)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -300,6 +305,7 @@ pub struct Extension { pub extension_type: ExtensionType, pub metadata: SmallBlob, pub globals: GlobalState, + // TODO: Merklize assignments for the commitment pub assignments: Assignments, pub redeemed: Redeemed, pub valencies: Valencies, @@ -312,6 +318,7 @@ impl StrictDeserialize for Extension {} #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] #[derive(CommitEncode)] +#[commit_encode(strategy = conceal, id = OpId)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -324,6 +331,7 @@ pub struct Transition { pub metadata: SmallBlob, pub globals: GlobalState, pub inputs: Inputs, + // TODO: Merklize assignments for the commitment pub assignments: Assignments, pub valencies: Valencies, } @@ -332,7 +340,7 @@ impl StrictSerialize for Transition {} impl StrictDeserialize for Transition {} impl Conceal for Genesis { - type Concealed = Genesis; + type Concealed = Self; fn conceal(&self) -> Self::Concealed { let mut concealed = self.clone(); concealed @@ -343,13 +351,8 @@ impl Conceal for Genesis { } } -impl CommitmentId for Genesis { - const TAG: [u8; 32] = *b"urn:lnpbp:rgb:genesis:v02#202304"; - type Id = ContractId; -} - impl Conceal for Transition { - type Concealed = Transition; + type Concealed = Self; fn conceal(&self) -> Self::Concealed { let mut concealed = self.clone(); concealed @@ -360,13 +363,8 @@ impl Conceal for Transition { } } -impl CommitmentId for Transition { - const TAG: [u8; 32] = *b"urn:lnpbp:rgb:transition:v02#23B"; - type Id = OpId; -} - impl Conceal for Extension { - type Concealed = Extension; + type Concealed = Self; fn conceal(&self) -> Self::Concealed { let mut concealed = self.clone(); concealed @@ -377,11 +375,6 @@ impl Conceal for Extension { } } -impl CommitmentId for Extension { - const TAG: [u8; 32] = *b"urn:lnpbp:rgb:extension:v02#2304"; - type Id = OpId; -} - impl Transition { /// Returns reference to information about the owned rights in form of /// [`Inputs`] wrapper structure which this operation updates with @@ -406,7 +399,7 @@ impl Operation for Genesis { fn full_type(&self) -> OpFullType { OpFullType::Genesis } #[inline] - fn id(&self) -> OpId { OpId(self.commitment_id().into_inner()) } + fn id(&self) -> OpId { OpId(self.commit_id().into_inner()) } #[inline] fn contract_id(&self) -> ContractId { ContractId::from_inner(self.id().into_inner()) } @@ -448,7 +441,7 @@ impl Operation for Extension { fn full_type(&self) -> OpFullType { OpFullType::StateExtension(self.extension_type) } #[inline] - fn id(&self) -> OpId { self.commitment_id() } + fn id(&self) -> OpId { self.commit_id() } #[inline] fn contract_id(&self) -> ContractId { self.contract_id } @@ -490,7 +483,7 @@ impl Operation for Transition { fn full_type(&self) -> OpFullType { OpFullType::StateTransition(self.transition_type) } #[inline] - fn id(&self) -> OpId { self.commitment_id() } + fn id(&self) -> OpId { self.commit_id() } #[inline] fn contract_id(&self) -> ContractId { self.contract_id } diff --git a/src/contract/seal.rs b/src/contract/seal.rs index 3bb0c6a2..c5720074 100644 --- a/src/contract/seal.rs +++ b/src/contract/seal.rs @@ -23,7 +23,6 @@ use core::fmt::Debug; use std::cmp::Ordering; use std::hash::Hash; -use std::io::Write; use std::num::NonZeroU32; use bp::dbc::Method; @@ -32,7 +31,7 @@ pub use bp::seals::txout::TxoSeal; use bp::seals::txout::{BlindSeal, CloseMethod, ExplicitSeal, SealTxid, VerifyError, Witness}; pub use bp::seals::SecretSeal; use bp::{dbc, Outpoint, Tx, Txid, Vout}; -use commit_verify::{mpc, strategies, CommitEncode, CommitStrategy, Conceal}; +use commit_verify::{mpc, Conceal}; use single_use_seals::SealWitness; use strict_encoding::{StrictDecode, StrictDumb, StrictEncode, StrictType}; @@ -275,23 +274,12 @@ impl SealWitness for XWitness { } } -impl CommitStrategy for XChain> { - type Strategy = strategies::Strict; -} - impl XChain> { /// Converts revealed seal into concealed. #[inline] pub fn to_secret_seal(&self) -> XChain { self.conceal() } } -impl CommitEncode for XChain { - fn commit_encode(&self, e: &mut impl Write) { - e.write_all(&[self.layer1() as u8]).ok(); - self.as_reduced_unsafe().commit_encode(e); - } -} - #[cfg(test)] mod test { use amplify::hex::FromHex; @@ -313,7 +301,7 @@ mod test { let secret = reveal.to_secret_seal(); assert_eq!( secret.to_string(), - "bc:utxob:6JZb8te-bSUsZzCJk-op9E4D8zf-SHTDu2t4W-T21NaPNnb-58DFM9" + "bc:utxob:MEtUtHY-Nk2QBNbkL-vnV1aAHcx-eYAwSr16Q-qGa5tKND8-MR3WG6" ); assert_eq!(reveal.to_secret_seal(), reveal.conceal()) } diff --git a/src/contract/state.rs b/src/contract/state.rs index 82b60c34..911dcbd9 100644 --- a/src/contract/state.rs +++ b/src/contract/state.rs @@ -23,7 +23,7 @@ use core::fmt::Debug; use core::hash::Hash; -use commit_verify::{CommitEncode, Conceal}; +use commit_verify::Conceal; use strict_encoding::{StrictDecode, StrictDumb, StrictEncode}; use crate::{ @@ -34,7 +34,7 @@ use crate::{ /// Marker trait for types of state which are just a commitment to the actual /// state data. pub trait ConfidentialState: - Debug + Hash + StrictDumb + StrictEncode + StrictDecode + CommitEncode + Eq + Copy + Debug + Hash + StrictDumb + StrictEncode + StrictDecode + Eq + Copy { fn state_type(&self) -> StateType; fn state_commitment(&self) -> StateCommitment; @@ -47,7 +47,6 @@ pub trait ExposedState: + StrictEncode + StrictDecode + Conceal - + CommitEncode + Eq + Ord + Clone @@ -84,7 +83,6 @@ pub enum StateType { #[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB, tags = custom)] -#[derive(CommitEncode)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -129,7 +127,6 @@ impl Conceal for StateData { #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB, tags = custom)] -#[derive(CommitEncode)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), diff --git a/src/contract/xchain.rs b/src/contract/xchain.rs index 4510f0eb..560f74ca 100644 --- a/src/contract/xchain.rs +++ b/src/contract/xchain.rs @@ -22,13 +22,12 @@ use std::cmp::Ordering; use std::fmt::{Debug, Display, Formatter}; -use std::io::Write; use std::str::FromStr; use std::{fmt, io}; use amplify::confinement::TinyOrdSet; use bp::{Bp, Outpoint}; -use commit_verify::{CommitEncode, Conceal}; +use commit_verify::Conceal; use strict_encoding::{ DecodeError, DefineUnion, ReadTuple, ReadUnion, StrictDecode, StrictDumb, StrictEncode, StrictSum, StrictType, StrictUnion, TypedRead, TypedWrite, WriteUnion, @@ -89,14 +88,6 @@ impl AltLayer1 { )] pub struct AltLayer1Set(TinyOrdSet); -impl CommitEncode for AltLayer1Set { - fn commit_encode(&self, e: &mut impl Write) { - for c in self.iter() { - e.write_all(&[*c as u8]).ok(); - } - } -} - #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)] #[cfg_attr( feature = "serde", @@ -161,12 +152,12 @@ where T: StrictDumb + StrictEncode fn strict_encode(&self, writer: W) -> io::Result { writer.write_union::(|w| { let w = w - .define_newtype::(fname!(Self::ALL_VARIANTS[0].1)) - .define_newtype::(fname!(Self::ALL_VARIANTS[1].1)) + .define_newtype::(vname!(Self::ALL_VARIANTS[0].1)) + .define_newtype::(vname!(Self::ALL_VARIANTS[1].1)) .complete(); Ok(match self { - XChain::Bitcoin(t) => w.write_newtype(fname!(Self::ALL_VARIANTS[0].1), t)?, - XChain::Liquid(t) => w.write_newtype(fname!(Self::ALL_VARIANTS[1].1), t)?, + XChain::Bitcoin(t) => w.write_newtype(vname!(Self::ALL_VARIANTS[0].1), t)?, + XChain::Liquid(t) => w.write_newtype(vname!(Self::ALL_VARIANTS[1].1), t)?, } .complete()) }) diff --git a/src/lib.rs b/src/lib.rs index 8062fdca..769dfb6c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -101,8 +101,6 @@ mod _reserved { #[display("RGB/1.{0}")] #[derive(StrictType, StrictEncode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] -#[commit_encode(strategy = strict)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), diff --git a/src/schema/schema.rs b/src/schema/schema.rs index b5440d8e..398a1bd7 100644 --- a/src/schema/schema.rs +++ b/src/schema/schema.rs @@ -27,7 +27,7 @@ use std::str::FromStr; use amplify::confinement::{TinyOrdMap, TinyOrdSet}; use amplify::{ByteArray, Bytes32}; use baid58::{Baid58ParseError, Chunking, FromBaid58, ToBaid58, CHUNKING_32}; -use commit_verify::{CommitStrategy, CommitmentId}; +use commit_verify::{CommitId, CommitmentId, DigestExt, Sha256}; use strict_encoding::{StrictDecode, StrictDeserialize, StrictEncode, StrictSerialize, StrictType}; use strict_types::TypeSystem; @@ -57,7 +57,6 @@ impl GlobalStateType { #[display("0x{0:04X}")] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -73,7 +72,6 @@ impl ExtensionType { #[display("0x{0:04X}")] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] -#[derive(CommitEncode)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -90,7 +88,7 @@ impl TransitionType { /// Schema identifier. /// -/// Schema identifier commits to all of the schema data. +/// Schema identifier commits to all the schema data. #[derive(Wrapper, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug, From)] #[wrapper(Deref, BorrowSlice, Hex, Index, RangeOps)] #[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)] @@ -106,6 +104,14 @@ pub struct SchemaId( Bytes32, ); +impl From for SchemaId { + fn from(hasher: Sha256) -> Self { hasher.finish().into() } +} + +impl CommitmentId for SchemaId { + const TAG: &'static str = "urn:lnpbp:rgb:schema#2024-02-03"; +} + impl ToBaid58<32> for SchemaId { const HRI: &'static str = "sc"; const CHUNKING: Option = CHUNKING_32; @@ -144,6 +150,8 @@ pub type SubSchema = Schema; #[derive(Clone, Eq, Default, Debug)] #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB)] +#[derive(CommitEncode)] +#[commit_encode(strategy = strict, id = SchemaId)] #[cfg_attr( feature = "serde", derive(Serialize, Deserialize), @@ -161,6 +169,7 @@ pub struct Schema { pub transitions: TinyOrdMap, /// Type system + // TODO: Commit to type system id, not the type system itself pub type_system: TypeSystem, /// Validation code. pub script: Script, @@ -178,21 +187,12 @@ impl PartialOrd for Schema { fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } } -impl CommitStrategy for Schema { - type Strategy = commit_verify::strategies::Strict; -} - -impl CommitmentId for Schema { - const TAG: [u8; 32] = *b"urn:lnpbp:rgb:schema:v01#202302A"; - type Id = SchemaId; -} - impl StrictSerialize for Schema {} impl StrictDeserialize for Schema {} impl Schema { #[inline] - pub fn schema_id(&self) -> SchemaId { self.commitment_id() } + pub fn schema_id(&self) -> SchemaId { self.commit_id() } pub fn blank_transition(&self) -> TransitionSchema { let mut schema = TransitionSchema::default(); diff --git a/src/stl.rs b/src/stl.rs index 4d173aa6..f1c9c4ca 100644 --- a/src/stl.rs +++ b/src/stl.rs @@ -32,7 +32,7 @@ use crate::{AnchoredBundle, ContractState, Extension, Genesis, SubSchema, LIB_NA /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB: &str = - "urn:ubideco:stl:141hHBYBr2mzKyskZbRuwazYC9ki5x9ZrrzQHLbgBzx#oscar-rufus-tractor"; + "urn:ubideco:stl:ENn5cEDW7QUStLzY6HBXjZFARAbrGHv3tXmdQ3QGzoU3#option-data-mimosa"; fn _rgb_core_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB), tiny_bset! { diff --git a/stl/AnchoredBundle.vesper b/stl/AnchoredBundle.vesper new file mode 100644 index 00000000..f736001b --- /dev/null +++ b/stl/AnchoredBundle.vesper @@ -0,0 +1,323 @@ +AnchoredBundle rec + anchor union -- XChainAnchorSet + bitcoin union wrapped tag=0 -- AnchorSet + tapret rec wrapped tag=0 -- AnchorMerkleProofTapretProof + txid bytes len=32 aka=Txid + 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 option wrapped tag=1 -- TapretNodePartner + rightBranch rec wrapped tag=2 -- TapretRightBranch + nonce is U8 + opret rec wrapped tag=1 -- AnchorMerkleProofOpretProof + txid bytes len=32 aka=Txid + 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 + dual rec tag=2 + tapret rec -- AnchorMerkleProofTapretProof + txid bytes len=32 aka=Txid + 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 option wrapped tag=1 -- TapretNodePartner + rightBranch rec wrapped tag=2 -- TapretRightBranch + nonce is U8 + opret rec -- AnchorMerkleProofOpretProof + txid bytes len=32 aka=Txid + 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 + liquid union wrapped tag=1 -- AnchorSet + tapret rec wrapped tag=0 -- AnchorMerkleProofTapretProof + txid bytes len=32 aka=Txid + 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 option wrapped tag=1 -- TapretNodePartner + rightBranch rec wrapped tag=2 -- TapretRightBranch + nonce is U8 + opret rec wrapped tag=1 -- AnchorMerkleProofOpretProof + txid bytes len=32 aka=Txid + 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 + dual rec tag=2 + tapret rec -- AnchorMerkleProofTapretProof + txid bytes len=32 aka=Txid + 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 option wrapped tag=1 -- TapretNodePartner + rightBranch rec wrapped tag=2 -- TapretRightBranch + nonce is U8 + opret rec -- AnchorMerkleProofOpretProof + txid bytes len=32 aka=Txid + 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 + inputMap map len=1..MAX16 + key is U32 aka=Vout + value bytes len=32 aka=OpId + knownTransitions map len=1..MAX16 + key bytes len=32 aka=OpId + Transition rec -- mapped to + ffv is U16 aka=Ffv + contractId bytes len=32 aka=ContractId + transitionType is U16 aka=TransitionType + metadata bytes len=0..MAX16 + globals map len=0..MAX8 aka=GlobalState + key is U16 aka=GlobalStateType + value list len=1..MAX16 aka=GlobalValues + RevealedData rec + value bytes len=0..MAX16 aka=DataState + salt is U128 + inputs set len=0..MAX8 aka=Inputs + Input rec + prevOut rec -- Opout + op bytes len=32 aka=OpId + ty is U16 aka=AssignmentType + no is U16 + reserved is U8 aka=ReservedByte + assignments map len=0..MAX8 aka=AssignmentsBlindSealTxPtr + key is U16 aka=AssignmentType + TypedAssignsBlindSealTxPtr union -- mapped to + 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 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 union -- RangeProof + placeholder bytes len=512 wrapped aka=NoiseDumb tag=0 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 union -- RangeProof + placeholder bytes len=512 wrapped aka=NoiseDumb tag=0 + 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 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + id bytes len=32 aka=AttachId + mediaType enum any=255 -- MediaType + salt is U64 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + id bytes len=32 aka=AttachId + mediaType enum any=255 -- MediaType + salt is U64 + valencies set len=0..MAX8 aka=Valencies + element is U16 aka=ValencyType diff --git a/stl/RGB@0.1.0.sta b/stl/RGB@0.1.0.sta index 58498c6d..e7be7c35 100644 --- a/stl/RGB@0.1.0.sta +++ b/stl/RGB@0.1.0.sta @@ -1,335 +1,317 @@ -----BEGIN STRICT TYPE LIB----- -Id: urn:ubideco:stl:2PcZtrPrfQCu27qw8b4Wz4cEqUn2PpgSkDHwF4qVyyrq +Id: ENn5cEDW7QUStLzY6HBXjZFARAbrGHv3tXmdQ3QGzoU3#option-data-mimosa Name: RGB Dependencies: - urn:ubideco:stl:ZtHaBzu9ojbDahaGKEXe5v9DfSDxLERbLkEB23R6Q6V, - urn:ubideco:stl:5XLKQ1sNryZm9bdFKU2kBY3MPYdZXhchVdQKBbHA3gby, - urn:ubideco:stl:8wHziC7Bxa3BwctUh6EVBanosrvRHecCTPUjkZT4btNd, - urn:ubideco:stl:9KALDYR8Nyjq4FdMW6kYoL7vdkWnqPqNuFnmE9qHpNjZ, - urn:ubideco:stl:DVtm25LRKU4TjbyZmVxPhvCmctZ6vKkPKqfpU2QsDNUo, - urn:ubideco:stl:HX2UBak8vPsTokug1DGMDvTpzns3xUdwZ7QJdyt4qBA9 + 4SZ2EgWWtC5LsNXmNpAzogNHZoaZNTCwU3SQhAYwDX6A#citizen-fiction-corner, + 55f8bsTvyh7zAeYAiNwL9G1DxgwXzDvE8edcTFJz3Q9H#milan-poncho-gray, + 6HFQ83t33zW6PgG2pWpXM3HuEUFXAgUjheYiQa2Jdb9c#jester-lorenzo-address, + BADMWBVQ6sMJGfELP13cjeZPNutGuLzZtNNZirJQsz9e#tower-monaco-corona, + DVtm25LRKU4TjbyZmVxPhvCmctZ6vKkPKqfpU2QsDNUo#exodus-axiom-tommy, + HX2UBak8vPsTokug1DGMDvTpzns3xUdwZ7QJdyt4qBA9#speed-atlanta-trilogy -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 -YPEXjj0OQW5jaG9yZWRCdW5kbGUGAgZhbmNob3IB788ASS9fnMrBefV9mYPcaKsK -UAgMD4v7j4JDc4mrMpYGYnVuZGxlAW4ba6tKdf/9D1V9TiZ8CDv9KXLk8niNIw+o -xgXYfZXDCEFzc2V0VGFnBQEABwAAQCAAIkFzc2lnblJldmVhbGVkQXR0YWNoQmxp -bmRTZWFsVHhQdHIEBAAMY29uZmlkZW50aWFsAAYCBHNlYWwB24paGoIUEHUo8viM -QENqxEdddHiJx9s6XhHGvtZptQQFc3RhdGUB/DRF3V/PDQv/rBWkeroFIuBbiysb -MGVSh4OPey3rjj0BEWNvbmZpZGVudGlhbFN0YXRlAAYCBHNlYWwBj7vC6EeaTuRN -4l1xf736E7jU0ZG0bZHBACIGG+GKcTUFc3RhdGUB/DRF3V/PDQv/rBWkeroFIuBb -iysbMGVSh4OPey3rjj0CEGNvbmZpZGVudGlhbFNlYWwABgIEc2VhbAHbiloaghQQ -dSjy+IxAQ2rER110eInH2zpeEca+1mm1BAVzdGF0ZQFoUzQgDNxTxk124rYuqmYv -2jrZkb8GqykOvND2egNKzAMIcmV2ZWFsZWQABgIEc2VhbAGPu8LoR5pO5E3iXXF/ -vfoTuNTRkbRtkcEAIgYb4YpxNQVzdGF0ZQFoUzQgDNxTxk124rYuqmYv2jrZkb8G -qykOvND2egNKzCFBc3NpZ25SZXZlYWxlZEF0dGFjaEJsaW5kU2VhbFR4aWQEBAAM -Y29uZmlkZW50aWFsAAYCBHNlYWwB24paGoIUEHUo8viMQENqxEdddHiJx9s6XhHG -vtZptQQFc3RhdGUB/DRF3V/PDQv/rBWkeroFIuBbiysbMGVSh4OPey3rjj0BEWNv -bmZpZGVudGlhbFN0YXRlAAYCBHNlYWwBggwNr2v9NAF3KKi+UnCYed/Skak6e5lC -h7SXv6GnqdsFc3RhdGUB/DRF3V/PDQv/rBWkeroFIuBbiysbMGVSh4OPey3rjj0C -EGNvbmZpZGVudGlhbFNlYWwABgIEc2VhbAHbiloaghQQdSjy+IxAQ2rER110eInH -2zpeEca+1mm1BAVzdGF0ZQFoUzQgDNxTxk124rYuqmYv2jrZkb8GqykOvND2egNK -zAMIcmV2ZWFsZWQABgIEc2VhbAGCDA2va/00AXcoqL5ScJh539KRqTp7mUKHtJe/ -oaep2wVzdGF0ZQFoUzQgDNxTxk124rYuqmYv2jrZkb8GqykOvND2egNKzCBBc3Np -Z25SZXZlYWxlZERhdGFCbGluZFNlYWxUeFB0cgQEAAxjb25maWRlbnRpYWwABgIE -c2VhbAHbiloaghQQdSjy+IxAQ2rER110eInH2zpeEca+1mm1BAVzdGF0ZQFwDWUQ -soKBbx+3PeUSY5MDVwilUmGtAuDUvlrFz6fqCQERY29uZmlkZW50aWFsU3RhdGUA -BgIEc2VhbAGPu8LoR5pO5E3iXXF/vfoTuNTRkbRtkcEAIgYb4YpxNQVzdGF0ZQFw -DWUQsoKBbx+3PeUSY5MDVwilUmGtAuDUvlrFz6fqCQIQY29uZmlkZW50aWFsU2Vh -bAAGAgRzZWFsAduKWhqCFBB1KPL4jEBDasRHXXR4icfbOl4Rxr7WabUEBXN0YXRl -ASDyUFYij2bO/JH66me8X8bwaVw9R3lzWT+s0TfKckhlAwhyZXZlYWxlZAAGAgRz -ZWFsAY+7wuhHmk7kTeJdcX+9+hO41NGRtG2RwQAiBhvhinE1BXN0YXRlASDyUFYi -j2bO/JH66me8X8bwaVw9R3lzWT+s0TfKckhlH0Fzc2lnblJldmVhbGVkRGF0YUJs -aW5kU2VhbFR4aWQEBAAMY29uZmlkZW50aWFsAAYCBHNlYWwB24paGoIUEHUo8viM -QENqxEdddHiJx9s6XhHGvtZptQQFc3RhdGUBcA1lELKCgW8ftz3lEmOTA1cIpVJh -rQLg1L5axc+n6gkBEWNvbmZpZGVudGlhbFN0YXRlAAYCBHNlYWwBggwNr2v9NAF3 -KKi+UnCYed/Skak6e5lCh7SXv6GnqdsFc3RhdGUBcA1lELKCgW8ftz3lEmOTA1cI -pVJhrQLg1L5axc+n6gkCEGNvbmZpZGVudGlhbFNlYWwABgIEc2VhbAHbiloaghQQ -dSjy+IxAQ2rER110eInH2zpeEca+1mm1BAVzdGF0ZQEg8lBWIo9mzvyR+upnvF/G -8GlcPUd5c1k/rNE3ynJIZQMIcmV2ZWFsZWQABgIEc2VhbAGCDA2va/00AXcoqL5S -cJh539KRqTp7mUKHtJe/oaep2wVzdGF0ZQEg8lBWIo9mzvyR+upnvF/G8GlcPUd5 -c1k/rNE3ynJIZSFBc3NpZ25SZXZlYWxlZFZhbHVlQmxpbmRTZWFsVHhQdHIEBAAM -Y29uZmlkZW50aWFsAAYCBHNlYWwB24paGoIUEHUo8viMQENqxEdddHiJx9s6XhHG -vtZptQQFc3RhdGUBwlGtZel1DayaElnMwIUkXNX3sW9S2HI2RizxdYyfTl0BEWNv -bmZpZGVudGlhbFN0YXRlAAYCBHNlYWwBj7vC6EeaTuRN4l1xf736E7jU0ZG0bZHB -ACIGG+GKcTUFc3RhdGUBwlGtZel1DayaElnMwIUkXNX3sW9S2HI2RizxdYyfTl0C -EGNvbmZpZGVudGlhbFNlYWwABgIEc2VhbAHbiloaghQQdSjy+IxAQ2rER110eInH -2zpeEca+1mm1BAVzdGF0ZQFtRMb0L2oFOkMVD6bmwizE6HrlLJT4BtQMpdyH9nWN -oAMIcmV2ZWFsZWQABgIEc2VhbAGPu8LoR5pO5E3iXXF/vfoTuNTRkbRtkcEAIgYb -4YpxNQVzdGF0ZQFtRMb0L2oFOkMVD6bmwizE6HrlLJT4BtQMpdyH9nWNoCBBc3Np -Z25SZXZlYWxlZFZhbHVlQmxpbmRTZWFsVHhpZAQEAAxjb25maWRlbnRpYWwABgIE -c2VhbAHbiloaghQQdSjy+IxAQ2rER110eInH2zpeEca+1mm1BAVzdGF0ZQHCUa1l -6XUNrJoSWczAhSRc1fexb1LYcjZGLPF1jJ9OXQERY29uZmlkZW50aWFsU3RhdGUA -BgIEc2VhbAGCDA2va/00AXcoqL5ScJh539KRqTp7mUKHtJe/oaep2wVzdGF0ZQHC -Ua1l6XUNrJoSWczAhSRc1fexb1LYcjZGLPF1jJ9OXQIQY29uZmlkZW50aWFsU2Vh -bAAGAgRzZWFsAduKWhqCFBB1KPL4jEBDasRHXXR4icfbOl4Rxr7WabUEBXN0YXRl -AW1ExvQvagU6QxUPpubCLMToeuUslPgG1Ayl3If2dY2gAwhyZXZlYWxlZAAGAgRz -ZWFsAYIMDa9r/TQBdyiovlJwmHnf0pGpOnuZQoe0l7+hp6nbBXN0YXRlAW1ExvQv -agU6QxUPpubCLMToeuUslPgG1Ayl3If2dY2gHUFzc2lnblZvaWRTdGF0ZUJsaW5k -U2VhbFR4UHRyBAQADGNvbmZpZGVudGlhbAAGAgRzZWFsAduKWhqCFBB1KPL4jEBD -asRHXXR4icfbOl4Rxr7WabUEBXN0YXRlAS6ypf4XwDBEMJjgXJsbWmzWHu12DWHe -y4Am02TzFuG7ARFjb25maWRlbnRpYWxTdGF0ZQAGAgRzZWFsAY+7wuhHmk7kTeJd -cX+9+hO41NGRtG2RwQAiBhvhinE1BXN0YXRlAS6ypf4XwDBEMJjgXJsbWmzWHu12 -DWHey4Am02TzFuG7AhBjb25maWRlbnRpYWxTZWFsAAYCBHNlYWwB24paGoIUEHUo -8viMQENqxEdddHiJx9s6XhHGvtZptQQFc3RhdGUBLrKl/hfAMEQwmOBcmxtabNYe -7XYNYd7LgCbTZPMW4bsDCHJldmVhbGVkAAYCBHNlYWwBj7vC6EeaTuRN4l1xf736 -E7jU0ZG0bZHBACIGG+GKcTUFc3RhdGUBLrKl/hfAMEQwmOBcmxtabNYe7XYNYd7L -gCbTZPMW4bscQXNzaWduVm9pZFN0YXRlQmxpbmRTZWFsVHhpZAQEAAxjb25maWRl -bnRpYWwABgIEc2VhbAHbiloaghQQdSjy+IxAQ2rER110eInH2zpeEca+1mm1BAVz -dGF0ZQEusqX+F8AwRDCY4FybG1ps1h7tdg1h3suAJtNk8xbhuwERY29uZmlkZW50 -aWFsU3RhdGUABgIEc2VhbAGCDA2va/00AXcoqL5ScJh539KRqTp7mUKHtJe/oaep -2wVzdGF0ZQEusqX+F8AwRDCY4FybG1ps1h7tdg1h3suAJtNk8xbhuwIQY29uZmlk -ZW50aWFsU2VhbAAGAgRzZWFsAduKWhqCFBB1KPL4jEBDasRHXXR4icfbOl4Rxr7W -abUEBXN0YXRlAS6ypf4XwDBEMJjgXJsbWmzWHu12DWHey4Am02TzFuG7AwhyZXZl -YWxlZAAGAgRzZWFsAYIMDa9r/TQBdyiovlJwmHnf0pGpOnuZQoe0l7+hp6nbBXN0 -YXRlAS6ypf4XwDBEMJjgXJsbWmzWHu12DWHey4Am02TzFuG7DkFzc2lnbm1lbnRU -eXBlBQEAAAIZQXNzaWdubWVudHNCbGluZFNlYWxUeFB0cgUBAAoBh/7iZViIbOgc -voaEs3ljJxNlg8W2aAFeixQWNrFEh7kBpbFI1A98HeTRGo3JsVJtuiNYUchQHz7F -F50oj2E2m4gAAAAAAAAAAP8AAAAAAAAAGEFzc2lnbm1lbnRzQmxpbmRTZWFsVHhp -ZAUBAAoBh/7iZViIbOgcvoaEs3ljJxNlg8W2aAFeixQWNrFEh7kBTIdke4cooXWf -mtNng98ms5VTvLhnSA9pjsBvEiBKzE8AAAAAAAAAAP8AAAAAAAAACEF0dGFjaElk -BQEABwAAQCAADkJsaW5kaW5nRmFjdG9yBQEABwAAQCAAD0NvbmNlYWxlZEF0dGFj -aAUBAAcAAEAgAA1Db25jZWFsZWREYXRhBQEABwAAQCAAEUNvbmNlYWxlZEZ1bmdp -YmxlBgIKY29tbWl0bWVudAFIvRpuF/uGOxZ8fiVeNWfbgkPvKl6666LFCs0Jrp5R -GgpyYW5nZVByb29mAahYa/iRZdrCIxBtvYXEhsk35rBm6wxmQf8WL2iod6WYD0Nv -bnRyYWN0SGlzdG9yeQYICHNjaGVtYUlkAZRS09sDq6uoUZ+n9j7QFOvUTX0xP/z+ -APpdJHpUBJAQDHJvb3RTY2hlbWFJZAAEAgAEbm9uZQAAAAEEc29tZQAFAQGUUtPb -A6urqFGfp/Y+0BTr1E19MT/8/gD6XSR6VASQEApjb250cmFjdElkAZ8ILEk6yAKi -usXd3AsifCCvlNRoxEjPGloh4L3C9ToyBmdsb2JhbAAKAdXukg5JiLNp8WpT0QdK -+7Uj+MdScR77Nj1WWQXh5BXLAAoBB7SElaRvyhEVa+s0HIyJd/17TX1d4gjt5THm -wuNzf4sBIPJQViKPZs78kfrqZ7xfxvBpXD1HeXNZP6zRN8pySGUAAAAAAAAAAP// -//8AAAAAAAAAAAAAAAD/AAAAAAAAAAZyaWdodHMACQH0qNfgh0gSkKuEGpmtpnq0 -SbTa+gHFLx7FmADi8cguXAAAAAAAAAAA/////wAAAAAJZnVuZ2libGVzAAkB01oa -tZtQigIgKLN924NOhG2bja/F0gROdLZZqvtVv3EAAAAAAAAAAP////8AAAAABGRh -dGEACQHks/TDu+QY2jS/AB6wRWvj21wzYFyFOdCWSuiE+5VQEQAAAAAAAAAA//// -/wAAAAAGYXR0YWNoAAkBgAyjMtuFRaD0wSwkfuJiCfgGJjbbv8TkPBdINX68QScA -AAAAAAAAAP////8AAAAACkNvbnRyYWN0SWQFAQAHAABAIAANQ29udHJhY3RTdGF0 -ZQYCBnNjaGVtYQEQQYJyNRcc2YKVkqaZF/4DcT+tb+LTIU6Iwf4co6cKnQdoaXN0 -b3J5AfwWymySKXIAW5Sa4xLBcw2dENhv/MLR7kcYGawmu5onCUV4dGVuc2lvbgYI -A2ZmdgHam1ETWBZWdpCH+5nlVpRyNoDXOQwGocwkmCwFZPfM1Qpjb250cmFjdElk -AZ8ILEk6yAKiusXd3AsifCCvlNRoxEjPGloh4L3C9ToyDWV4dGVuc2lvblR5cGUB -ZHUeQqkVoTxDEYLV/4bVHNNEcKOQ4UrsoFDMOlNvSN4IbWV0YWRhdGEACAAAQAAA -AAAAAAAA//8AAAAAAAAHZ2xvYmFscwGiM8noKE7MdZj8BjnnNNDLAoxLLNyEkT6Z -2apGPiTWUgthc3NpZ25tZW50cwEj5eQWaDYQ3gn9s1cnuDGl9HhgyoDE1dsJNNr3 -8Z6KFghyZWRlZW1lZAHfz6mR9YflTUS3ARVcACn8lWub8c2pQY5jOJaqwCqD6Al2 -YWxlbmNpZXMB3YVmAG9hZBEU7o7x16r4CbMaJLCqJ6mbsjDoqs8pR00PRXh0ZW5z -aW9uU2NoZW1hBgUIbWV0YWRhdGECQzQDlNgbMOJSKJAmHvNv+fioOVGR9QtpXiMq -HrO3QchrBKMUnqaVABZnn+8CtKsk9ea3imTI2dC9ZfzXo1hOjQdnbG9iYWxzAAoB -1e6SDkmIs2nxalPRB0r7tSP4x1JxHvs2PVZZBeHkFcsBNsE0ofqggROn3TCAPF6w -8sL92hSw1aPWk8Nung8yqnkAAAAAAAAAAP8AAAAAAAAAB3JlZGVlbXMACQFG7ebD -CBz9uOZXpCpc4MYIhH/8H75edrlxdKnK9YlZzgAAAAAAAAAA/wAAAAAAAAALYXNz -aWdubWVudHMACgGH/uJlWIhs6By+hoSzeWMnE2WDxbZoAV6LFBY2sUSHuQE2wTSh -+qCBE6fdMIA8XrDywv3aFLDVo9aTw26eDzKqeQAAAAAAAAAA/wAAAAAAAAAJdmFs -ZW5jaWVzAAkBRu3mwwgc/bjmV6QqXODGCIR//B++Xna5cXSpyvWJWc4AAAAAAAAA -AP8AAAAAAAAADUV4dGVuc2lvblR5cGUFAQAAAgNGZnYFAQAAAg1GdW5naWJsZVN0 -YXRlBAEIBmJpdHM2NAAFAQAACAxGdW5naWJsZVR5cGUDAQ11bnNpZ25lZDY0Qml0 -CAdHZW5lc2lzBggDZmZ2AdqbURNYFlZ2kIf7meVWlHI2gNc5DAahzCSYLAVk98zV -CHNjaGVtYUlkAZRS09sDq6uoUZ+n9j7QFOvUTX0xP/z+APpdJHpUBJAQB3Rlc3Ru -ZXQCe4SAPJ764hElp3wsObxw0v3o+UOuDf2c9OaC7cdmynBhhiLRe67wZgLf53XJ -gOCza2666AkNgHX3UTvsS5P2TQphbHRMYXllcnMxASRXUthlgPCcymojN1QSRCBg -fKMsf+7M8RQQAG8KCSqMCG1ldGFkYXRhAAgAAEAAAAAAAAAAAP//AAAAAAAAB2ds -b2JhbHMBojPJ6ChOzHWY/AY55zTQywKMSyzchJE+mdmqRj4k1lILYXNzaWdubWVu -dHMBI+XkFmg2EN4J/bNXJ7gxpfR4YMqAxNXbCTTa9/GeihYJdmFsZW5jaWVzAd2F -ZgBvYWQRFO6O8deq+AmzGiSwqiepm7Iw6KrPKUdNDUdlbmVzaXNTY2hlbWEGBAht -ZXRhZGF0YQJDNAOU2Bsw4lIokCYe82/5+Kg5UZH1C2leIyoes7dByGsEoxSeppUA -Fmef7wK0qyT15reKZMjZ0L1l/NejWE6NB2dsb2JhbHMACgHV7pIOSYizafFqU9EH -Svu1I/jHUnEe+zY9VlkF4eQVywE2wTSh+qCBE6fdMIA8XrDywv3aFLDVo9aTw26e -DzKqeQAAAAAAAAAA/wAAAAAAAAALYXNzaWdubWVudHMACgGH/uJlWIhs6By+hoSz -eWMnE2WDxbZoAV6LFBY2sUSHuQE2wTSh+qCBE6fdMIA8XrDywv3aFLDVo9aTw26e -DzKqeQAAAAAAAAAA/wAAAAAAAAAJdmFsZW5jaWVzAAkBRu3mwwgc/bjmV6QqXODG -CIR//B++Xna5cXSpyvWJWc4AAAAAAAAAAP8AAAAAAAAACUdsb2JhbE9yZAYCDXdp -dG5lc3NBbmNob3IABAIABG5vbmUAAAABBHNvbWUABQEBWBKVDSCLtE2x7PXqOsWZ -ms7libho0a7KSHYtieyeGjwDaWR4AAACC0dsb2JhbFN0YXRlBQEACgHV7pIOSYiz -afFqU9EHSvu1I/jHUnEe+zY9VlkF4eQVywFGNH2lHu1oDF77by+mxG/p2cNS74mO -KbKURqaNxqBepgAAAAAAAAAA/wAAAAAAAAARR2xvYmFsU3RhdGVTY2hlbWEGAgVz -ZW1JZAJDNAOU2Bsw4lIokCYe82/5+Kg5UZH1C2leIyoes7dByGsEoxSeppUAFmef -7wK0qyT15reKZMjZ0L1l/NejWE6NCG1heEl0ZW1zAAACD0dsb2JhbFN0YXRlVHlw -ZQUBAAACDEdsb2JhbFZhbHVlcwUBAAgBIPJQViKPZs78kfrqZ7xfxvBpXD1HeXNZ -P6zRN8pySGUBAAAAAAAAAP//AAAAAAAABUlucHV0BgIHcHJldk91dAGTELyAsTRa -iy/DWFLuD01o0B23+jXLm2SSq1YJmvSalwhyZXNlcnZlZAFFKqVffdYBSouhbcRm -MrYP8bVs3DpTLs+9a5PVZxmeiQZJbnB1dHMFAQAJAclCQiLtAr5Haf1PIx2zRU6n -KLxDqBEO2zPLjy8KnkhGAAAAAAAAAAD/AAAAAAAAAAlNZWRpYVR5cGUDAQNhbnn/ -CU5vaXNlRHVtYgUBAAcAAEAAAgtPY2N1cnJlbmNlcwYCA21pbgAAAgNtYXgAAAIE -T3BJZAUBAAcAAEAgAAVPcG91dAYDAm9wAZXI5noedWJf1JZVQmqR635CkKFvWpjx -vlD3tookEvfFAnR5AYf+4mVYiGzoHL6GhLN5YycTZYPFtmgBXosUFjaxRIe5Am5v -AAACHk91dHB1dEFzc2lnbm1lbnRSZXZlYWxlZEF0dGFjaAYEBW9wb3V0AZMQvICx -NFqLL8NYUu4PTWjQHbf6NcubZJKrVgma9JqXBHNlYWwB0WcXvUMS8PYJhO7+bk0e -CwMDJ/lOyLsFkizEyTEnlqoFc3RhdGUBaFM0IAzcU8ZNduK2LqpmL9o62ZG/Bqsp -DrzQ9noDSswHd2l0bmVzcwAEAgAEbm9uZQAAAAEEc29tZQAFAQGJa1glzcaQX1ha -x2CoUBexF5DFX+SZQXrRAyDwI0cb8RxPdXRwdXRBc3NpZ25tZW50UmV2ZWFsZWRE -YXRhBgQFb3BvdXQBkxC8gLE0Wosvw1hS7g9NaNAdt/o1y5tkkqtWCZr0mpcEc2Vh -bAHRZxe9QxLw9gmE7v5uTR4LAwMn+U7IuwWSLMTJMSeWqgVzdGF0ZQEg8lBWIo9m -zvyR+upnvF/G8GlcPUd5c1k/rNE3ynJIZQd3aXRuZXNzAAQCAARub25lAAAAAQRz -b21lAAUBAYlrWCXNxpBfWFrHYKhQF7EXkMVf5JlBetEDIPAjRxvxHU91dHB1dEFz -c2lnbm1lbnRSZXZlYWxlZFZhbHVlBgQFb3BvdXQBkxC8gLE0Wosvw1hS7g9NaNAd -t/o1y5tkkqtWCZr0mpcEc2VhbAHRZxe9QxLw9gmE7v5uTR4LAwMn+U7IuwWSLMTJ -MSeWqgVzdGF0ZQFtRMb0L2oFOkMVD6bmwizE6HrlLJT4BtQMpdyH9nWNoAd3aXRu -ZXNzAAQCAARub25lAAAAAQRzb21lAAUBAYlrWCXNxpBfWFrHYKhQF7EXkMVf5JlB -etEDIPAjRxvxGU91dHB1dEFzc2lnbm1lbnRWb2lkU3RhdGUGBAVvcG91dAGTELyA -sTRaiy/DWFLuD01o0B23+jXLm2SSq1YJmvSalwRzZWFsAdFnF71DEvD2CYTu/m5N -HgsDAyf5Tsi7BZIsxMkxJ5aqBXN0YXRlAS6ypf4XwDBEMJjgXJsbWmzWHu12DWHe -y4Am02TzFuG7B3dpdG5lc3MABAIABG5vbmUAAAABBHNvbWUABQEBiWtYJc3GkF9Y -WsdgqFAXsReQxV/kmUF60QMg8CNHG/ESUGVkZXJzZW5Db21taXRtZW50BQEABwAA -QCEAClJhbmdlUHJvb2YEAf8LcGxhY2Vob2xkZXIABQEBHnYX8Sd92z674WoPchG3 -be1V329DDVURXwN4J6VCVycIUmVkZWVtZWQFAQAKAUbt5sMIHP245lekKlzgxgiE -f/wfvl52uXF0qcr1iVnOAZXI5noedWJf1JZVQmqR635CkKFvWpjxvlD3tookEvfF -AAAAAAAAAAD/AAAAAAAAAAxSZXNlcnZlZEJ5dGUFAQAAAQ5SZXZlYWxlZEF0dGFj -aAYDAmlkAYRxDZMsTvTDtwhLaYuwh3ApfjlkJH9Fkdjag23Rfbo4CW1lZGlhVHlw -ZQFCMGGFiMjUqxQmQMf9yRcszdD/EP8Nk4AARHyImt3MeQRzYWx0AAAIDFJldmVh -bGVkRGF0YQUBAAgAAEAAAAAAAAAAAP//AAAAAAAAEFJldmVhbGVkRnVuZ2libGUG -AwV2YWx1ZQGmjDCRR0vKOsJijMeVRI0s3arFFJ8FM5Wr9jxVYQcXJghibGluZGlu -ZwGFuPgru/Skpg2zvz9FuA+UbniDw61SbZP0b6MBqG5H2gN0YWcByY+aqcMGSxr9 -/Wcbl7wq/P5MaI8fc8gt63Fv52mbIq8GU2NoZW1hBgoDZmZ2AdqbURNYFlZ2kIf7 -meVWlHI2gNc5DAahzCSYLAVk98zVCHN1YnNldE9mAAQCAARub25lAAAAAQRzb21l -AAUBAAAAC2dsb2JhbFR5cGVzAAoB1e6SDkmIs2nxalPRB0r7tSP4x1JxHvs2PVZZ -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 +15!sq1~VSXp&gflt-+@~_eeBXa!cG8g3ZW4Bp*VfbYxC+0vHR+edZy`|Kv*>uVx +kpmL}Eg3U`IlNoAa7B+CXuP(yEWWtQ;}kI`46>9@qkSrR0T#xnXija}LTPkkZ)t7@1wm|eR!sr` +ZSSEb;k|42*wg~2q@3^Lq|9zft}OB~jx>)hO72TW;VQ)zT%r!Z9lE%{u?@QI^ +EqCb}2Q7OO^w+`_q*ddTXmHSf)1x#sTNn{2>P(yEWWeorUdtm>UaGoca9LuK7Ij+X8IutaRAF#(Wpqw&WMxoca&&HGas$;gkn2QsifIWLvZbUw81 +NwsGjgonnp^pYSe+vyeGo->aBOK~X>?O%VQf@*X=D$!ADBNH?W>M^%H|xc>sh|Dn +*!v8^Ea7rh?dzC2n-8UVQ_L~bWn0{Z)Ow3Q&MIpyF?|7J7@IF!hZhz8Wft0d6dj=*oo`t>c$)o5X19O9`rXu +=lIsRdWprq7WH>)!E^$-R$RUwD%Xb~0J!Ic@@+ehVE%-)5lom~G1rbzXaB^jIQfX +&sbV71rZewUhC#Wt^wA&hNfbvI8l{tqo-}{|djZ8YAkJtUQVz<=}LTqVnWK(5fY* +ctqbaF>d&s@;xOg?z(`#e5a?6_IYcQ>Du*Pw +&hI`xNV4B0;>oUbhHyi-Y#=22)QEgSwgbZe&wsVQf@*X=JhGI5`vwIKJ +?28qdBQV5M*2;q-lY2q<~K(fZR6A>9R3cu;h5!P-FPcA5c2+v;>D@qdC-Hdlhx3 +aZBNPbr@aHF*SPB$t~%I3sYlqX>fExd30rSF}tqlgo$^>um>@6G0l?pFt#Zz&53{ +9y57aQ#OZ(83shlnPH$voNMUnmU#!_}aHwX>fF-fOl4taR%LShqNggpk^aqssIi!kV?X)a%pCH0suIkLxv|61vo|i^jdP +;%w2}rc(F;vwa%*g5P;zf?W&=}nWC8$Th9c2>uJC38-{*D7fZ(%hZo23R4S;p`Q9 +JBQllDynLT_(ua*n2om)>+B_9|IvuuF#~1iwYr-#C?=ekSLqB#`8-4nb^iXkkuuZ +A@=uVRL8;Q*?4^V{}w`aAk8302{a_f~YKKsRVJ$cq_YIR$d@A*Ad=)x)vi0X9JtzktHWiJ@1L)babHELfN$u@7k>`Uy~SX>Dn +AX?A5pv*m4Yw)B>wxiHZ7F<>4e9@?+^Gt^ge<33_oRD_8TR$+2!VQzFuZf0*&Wo= +1hWQ^1guxo~?k7uF4NzDeO#rBGKK=2;%1>}BM5{Lay5>;+)VQpn(MrmbiWOGwxZA +oNiJ2xM}SaLsnunswt8WkEvwiIxOQC;OL>r^THZDGL>PGN0jWJYOaY-Dp&Wo=1hX +I79H6CJlHnxEK%NSB*vEUCdBMWU%~<6#T5;KWaW3Px#VY-CeqZAoNn1fvw5rj-B| +XP@r^w5ufb=C_Ju$l1`nW&GEpSWb-vQ)O*QWPNrrN%arAsa2~aa`JC!kHz2#8iMH +*6x*Uu)+c1g=mkk+Wo~qV(<~&{!{{>E!(#o&^pB98KZhv1GEPn8Orhb4n;8ZMQ)z +l>ZfBAby7Gca>vy*Q?h@&~tk)^LbBPzYo<|k4j{}!dEPo6|Zgp)|VRC6?pA9RqgJsQ +F)~2<)1*a`BfGWZkxd_avHyWRvZaNX=Q9=PGN0j!P3H)ZNVYHBOq;+#Z*Ep$a%o +|1baPW>ZAoNN00}{CbWCA+WpXhC0S0Voadl~A0SrNGbWCA+WpXi7Wpo7r00{xeYl +3?VT7AZm1SE3hA}5c~&&3*7XrN0!sxd$tJbohp00000000300000000009L2PwXV +{&P5bOr(hY-wV1015)Rvj?DBr&dXZLqcx477IU*jA;4jPyNj;g+K~N3L015yH002M(00OzQ2cTM~R!N3KLTaU=OZ$bvG|>z)+>9PT;Au-7)~D;-++hF!00 +0000096000000000R=ZewU~a#Lk=1OovEbYXCEWpn@q0Rm2R0vHR+edZy`|Kv*>u +VxkpmL}Eg3U`IlNoAa7B+J3tK<0Lu0Y%&DbYn`jrnGScK?m>lquAdZ^vT}#Ew};& +Z*X#DbN~eb0#0-S7z@jN<{`@e-AdqkKoJOcz|bzy7(1_B0jVQ_L~bOKIv0vHR+edZy`|Kv +*>uVxkpmL}Eg3U`IlNoAa7B+J3tK<0Lu0Y%&DbYn`jrnGScK?m>lquAdZ^vT}#Ew +}}5aB^jI0#0-S7z@jN<{`@e-AdqkKoJPtu_V`y)3Wn@BiZe(m_1_B0QZewU~asf5!7Zdcy +l>8RP#sS2w|IN6-<8Et=ENgX*_C9_Aywe6^b#7#AWdRrmS^+GP1(NY|VSL{`Aakf +-b&`C+KNzO3Nia(K_;mKtpQ8M_qJyiO1VIUJ=H=)@ii_1#@&^bY%hjG)3KC&kYOztQDksx&yAAE5o2#|W@%()Zggp3Y*Tb$bY%br0t9nqVQc}9yTa&4noi_R;$3ln +z4{Zl)X|Z&ZIQtMA_g1big7gsb97;JWdZy&McrS|4GaIQ6{LE)1tQ>Eiz^#2Wm1Q +Ok9#fajy(bpV{dL|X=G(?bZKF1Q)OXn00sgCb7f&{0o#gN8iEuMbtv-qj6g$b#7A +9pc!|f`I$jaRzSe2A1O;<+VRU5yXj3#G4BS)3O?Kk8E~;iP+B(^hzXq!*4!qFzdI +L(#0|;_uc4c8~Wn=&b0t9nqVQc}9yTa&4noi_R;$3lnz4{Zl)X|Z&ZIQtMA_g1bi +g7gsb97;JWdUeYG$0JzQ^rkp;Yy +C6yAAF5Mys{W@%()Zggp3Y*S@nYybuV1aoC!YysPfS{i~B5OpZ> +_>4e9YQ#rfba;u!+d5tm#=h2RwFCuobYXO50ccY+APn47#!YtOwl1n>FWNfUk-rA +3DGt2Q_Id+K%mWB=Wp-s@Y-MBs1_A_gWnpXqf(#9>YyC6MdwWnpYocu;h51OxyKV{dL|X=G(?bZKF100sgCb +7f&{0o#gN8iEuMbtv-qj6g$b#7A9pc!|f`I$jaRzSe2A1O;<+VRU5ya1CV;vVwtc +AGbZ_5@VACR|ut2VXXq-)V^B9&!_4M0TE+wZf0p@Wo~q7VQf=$VRU5x1_A_gWnpX +qkGsO?N19ILP2yc~f4%w>xYW^+v~7{W03rq(;firJ1#@&^bY%f>4P_9rf`M-zw>{ ++&W0M0{2&GbCtpecGzFNi4r|Jm;5Mys{W@%()Zggp3Y*S@nYybuV1aoC!YysPfS{ +i~B5OpZ>_>4e9YQ#rfba;u!+d5tm#=h2RwFCuobYXO50sm-Yz<5%CY59k^g5#W{6 +D&GDo53%OaP0&iRq +xYW^+v~7{W03rq(;firJ1#@&^bY%hmXk);5Qh;gshq!{{oTC#gIzF4hFN<*P1Rqu +LWiVeKL349yXKqquc4c8~Wn@HQbYVhlX>MdwWnpYocxhw=1ONKtpQ8M_qJyiO1VIUJ=H=)@ii_1#@&^bY%f>4P +_9rf`M-zw>{+&W0M0{2&GbCtpecGzFNi4r|Jm-5o2#|W@%()Zggp3Y*Tb$bY%br0 +t9nqVQc|{3=OYq{WJl0D5$WZob97;JWdU#vWe~E0 +fo~tTJ>?Q(lLJ=>rBY$70^roXTE)+&>Ini6V{dL|X=G(?bZKF1Q)OXn00sgCb7f& +{0o#gN8iEuMbtv-qj6g$b#7A9pc!|f`I$jaRzSe2A1O;<+VRU5y|7c^tcv66A`G> +fIWZob97;JWdZ+aW59S)fNA-MxPs%HqZ2GTKAXWWi +*W4(A64;XFkc}-b8~5DZc=4-WnpY(WL9Bpb!9?qX>MdwWnpYocu;h51OxyKV{dL| +X=G(?bZKF100sgCb7f&{0o#gN8iEuMbtv-qj6g$b#7A9pc!|f`I$jaRzSe2A1O;< ++VRU5y!cnbd>2(dPni5&ez=b4S)%US)QrL1fMlA7ljGsxYW^+v~7{W03rq(;firJ1#@&^bY +%g;QLSa^bq%bV5?Rc^g(O_n_pxtM*m5>TEb(=WpH5u@5Mys{W@%()Zggp3Y*S@nY +ybuV1aoC!YysPfS{i~B5OpZ>_>4e9YQ#rfba;u!+d5tm#=h2RwFCuobYXO50c}La +^e<`!Iztr?rsl#d#OQkEER^^L)C{HEhxT=ipaTeUWp-s@Y-MBs1_A_gWnpXqkGsO +?N19ILP2yc~f4%w>xYW^+v~7{W03rq(;firJ1#@&^bY%f;M8@2(dPni5&ez=b4S)%US)QrL1fMlA7ljGsYyC6TEb(=WpH5u@5Mys{W@%()Zgg +p3Y*S@nYybuV1aoC!YysPfS{i~B5OpZ>_>4e9YQ#rfba;u!+d5tm#=h2RwFCuobY +XO50c}La^e<`!Iztr?rsl#d#OQkEER^^L)C{HEhxT=ipaTeUWp-s@Y-MBs1_A_gW +npXqf(#9>YyC6_>4e9YQ#rfba;u!+d5 +tm#=h2RwFCuobYXO50WPwo{ujV7L@=1(T$>wOY}Ov_b`4?P%YY`+Wb+o`y8#hnZ* +FF3WMyu2X<=+rbYXO500sgCb7f&{0gt=F=tr7P_>4e9YQ#rfba;u! ++d5tm#=h2RwFCuobYXO50WPwo{ujV7L@=1(T$>wOY}Ov_b`4?P%YY`+Wb+o`y8#h +nZ*FF3WMyu2X<=+rbYXO500sgCb7f&{0fGz-uWS7@0e2{@L7b8`d&00v=Vb7gLH000012XJy_b7gLH00jX7iECIT&Bl;lSX +#$ms8AQN7m&qYKfZ0H=mhJ>?uVMd`Zf8beV{~tF1pxpD002NB01rcNZewL(Y-MCYbaY{3XaxZP2 +LJ#-AOH +D0jOAO_>pDW!XprEy@kYv$v5V(X6p=QLH`ynXsCCkm=8m5Zgg^CV{}Mqb98TVc?J +jwb7N>_ZDC1d0hChH+XJhss8OG%_CC-Q>(otsF+cqN0Qy}ddQ=3E5Dao}Z*)^*Xk +~3-Nn`*70ssVVZ*FA(00035b8l^B00jX7lv2~%1FNg3QJ<&wKF}2F)J=UcKm7gx` +duV?R0NO^3S)0>baG*1bV+0Zp9m~TI>-W|y2ahx3nF|Vuawki#7NH?S|Q-Q!u2{b +24`$O^z3qkU`2%>V!Z000000RR90 +{{R3000d-VbYTDq0Zm&2unN%Ogv+IWOlAQDZ9;ju-OD&R*`2#>nd!~X9RL6T0000 +00RR90{{R3000v=nbYWv?00{xXnY9F@W0kV-aZ{ajBd_ZDnD~<$3CBu40zYmn*4o +Vg0000000030|Ns900000ALvL<$a$#e1Nn`~900#g7Kp+4OLvL<$a$#e1Q*>c;Wd +;HUb7N>_ZD9cy#FTPkGHkVT5cWBQ@u6K8aKc_jMubjo`Wy&nb#mDUXlZkFZ*qA7R +_IuAa?c1y4{!B0lLRVe@c%rricI<>A{c-Zhn%3h2}EIZVN-NrbY%qr00;m8KmY&$ +000000RR600000000~8SbY*UHX>V=@2m@wjb^+R(Q4?4eR(6nw`loIF_o +wDud_=c42H~ZewX>a{=9jW&m$tWDykZj`7#3_zANbB(SO{shhGe=&H{tM@ioJpYH;+t0eX2w~A!Q+0eaZ{MVycPK^g=Y;R&=Y;yn#0oCr34 +oQf!Y4K`P(FaQVwIle)QgI&pHa%8Z1>xis%Ku=2wF+7z(W +qt=tdZk`V^s(Ana000000093000000000MaWn^V#ZF2w#0Y>fS!w4MxxaL=+DqP^ +k2!wz9AHH68xp8!<%Jqp^&Hw-a000000RI300000001IJrb7^O8ZDnqBa{vkfhyL +PaScq)s9KMExvw34D6J>+NwrBxfixd_%u|$Wt0XD%jq57bK6Q|uUfIMEX^1}Vv6t +LB!)|10-o)0prc>n+a000000RI3000000010+sY-Mg^X=QT&2?0j!=EDda{kY~=q +$*tC#t4Le{2#tvcDZqMsmk?$e$17>D+0ot2U6Id2jc94hrndM +fLayEe1ISdA&%p{mB1!VWk)d+KAXk~3-Nn`<(Qq$W5tE;F{pQrXd&=l*`O?@#x{Q +dy?T_k!`1dtF1bY*jNZe?@=JfJU>zJB;=bhBCKPB)LHON@H8JZNt%NvJPm-=hp1V +TK~nd#>Oe*2+$Gv`#s(_J`M{(ZDxCj+u}PDuB+X33g#@Wo~0>Wpe@Dg= +PS6VPp{$?vC--s`v@B8YHl)C#jpVFzBk!DMw8WM`dnhb7^x^V`yb9@qkSrR0T#xnXin+a000000RI +300000001IJrb7^O8ZDnqBa{vkfhyLPaScq)s9KMExvw34D6J>+NwrBxfixd_%u| +$Wt0XD%jq57bK6Q|uUfIMEX^1}Vv6tLB!)|10-o)0prc>n+a000000RI30000000 +10+sY-Mg^X=QT&2?0j!=EDda{kY~=q$*tC#t4Le{2#tvcDZqMsmk?@L7b8|s%V`y)300aU61a5C`WdHyG0R(e +zZDjxj0RdPNl?@<^v`w+>_3ApsnVQb!iMVLduF6PuEs5-&8axAOWOx7o0t-iMZ(? +C=Q*>c;Wd#8M3IWybk`76TvuW{aQ_%-X`?VwZ$5L?~`!+pRSq0(b70UsD_3x-QSV +kkiHn)wTQ=jD3leC;d)A>d7ius)Glx8ac0000000030000000000HM{I9mVQf=$V +RU6vV`ybioJpYH;+t0eX2w~A!Q+0eaZ{MVycPK^j{VR%V&Wo>f+00Iw3Y;R&=Y*Tb +$bY)a|aAgGn0006EM{I9mVQf}mY;|RG1pxpE0sm-Yz<5%CY59k^g5#W{6D&GDo53 +%OaP0&iRqbODnPynwMZT8 +l5kSW@l}O=!>^xB4~9n`Dx!RtcK)nwJQ2Wpib6c4cG%MJlCVebxa=i=l1AW-_)9@ +wIH+I#Vvsy=#-zXBnP}21#ykb#!wD0RRaB$wERR?E=0>Y5h+l9kWGFrzpHbs1Xj^ +Gs}-J3Z6(t0000000000{{R30000002~A~WX<<}(aAgAl17U7?{|QcSX>(;nb!}n +=0RRU806+i&3r}NXb#iiLZewM01_A?ZX>I@j0t0PfcmMzb1W#~DWCZ~L2LJ#-AOH +nVaBp>V1_J_bZ~>Lb=6W7=VqesjRYGc!>wZFzp>JB4@xD;^wu&SY_r(Hqc>#z1;$ +>KfZ0H=mhJ>?uVgq>HOrf1lB-q; +n)I5N1aoC!Yyr_{7rjFg@b(FW?*48~9t#5lC;3juy9JUg#K|!ymZ}AFbYXO50ccY ++APn47#!YtOwl1n>FWNfUk-rA3DGt2Q_Id+K%m;UAbZ%vHa{&c&;K@+Vs`Svqn*& +{=>Y>ovG-QI%SssLzB+C`1S!Nthb#!obbU|}-X=iS2Wo~p*Wp-s@Y-MCbVRT^z1O +;z!Z*_D5lMuXsu{2tXFT+?;?hj39&>gq>HOrf1lB-q;n)I5N1aoC!Yyr_{7rjFg@ +b(FW?*48~9t#5lC;3juy9JUg#K|!ymZ}AFbYXO50sm-Yz<5%CY59k^g5#W{6D&GD +o53%OaP0&iRqY>ovG-QI%SssLzB+C` +1S!Nwib#!obbU|}-X=iS2Wo~p*Wp-s@Y-MCtVQh6}1_T9faBp>V0h18CfUz`Mi!Z +}iQtl5;XwV(E`Zdd&WRj~^37YhpmjrWVVQc}>XBWLg67cp3gzo-sO&$va11I@T$h +!rSEX2t%Czh%Ob97;JWdUtO#`G_01v*0&52ohAEX3$~@L7b8`U&bKuEP&Z_j#!c;Wd;NVZ*XsQbODnPynwMZT8l5kSW@l}O=!>^xB4~9n`Dx!RtcK +)nwJD~WnpXq(PtOELlW@z354$cZcQEw0|O`dPRP3jk}Sl@F(;O)1#@&^bY%f9vZe +kPz%WEGnBZKS8(M7E9_@AwVcyGtCevi|7U8=GcWHEPWpi@@1#{rZP|m9K(8HSpU8 +Cxu(AzX*g3wtWgq9@B6{cBc5>RDiWpZ<6ZbNTvZE19EWo~o@0RRU806-xC3Q}QiX +Jt@wZ*OJ<0sjkdY+++%Xm4y}WpV%o0RbL%7x5>3+djMDY7cS|w{7iJ-)}<=RS{nU +cqgSoS0@NkWn^V#ZDnKy0RRdCM(yUq2ps*m=2xUDT;RqCgn#@WzFu~@adfH5^@&- +|0hP$+dLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#Q*>R000000RI300000001Q +%Pb7gXNWn@BmbY%qr0003FQe}2!VQgh&L3DIsV`v5g0%>FcgmDd%EKc;pw+KsVi? +D}qDSkO*B!5Mb*xG|_(S5o&32kL$X<<}(aAg5PFkyv=$keM8CP2si$rmim(Ekws4 +U>QXM0|*v-OPCeb75?B000OKQe}2!VQgh&L}7Gc1_A|kVQh6}0WzLeQ3m-<6)UHj +qig^*m4co5us7ukl*0UQzs7w8g#>e9Y;*ts5D-#jc4c8~Wn@NmZf9v?Y-I)m1$JR +Kwa1v8ba_B>T#2Nxy?Vr*${WNB_^0fo5uE4% +chrVX>dKSj6?lx}!~!>v+nlk{(+0jO?A+5>c9X93BNnyJGEOB((CXB(HiD*XOTXp +bLr$Svz}Z|7;7BCiHhV`yb}5vZY(~ +FzYeIdN`S$)9l7ap=09=fBme*a000000RI3000000019t+Ze?Utd2nTO015$z{^D +g=h-~N_zJ`Red1EINWrM}GXaQb}6c#qIM2EQnILZ{@g(An}If6!%vcs8JbyKG3$_ +x(S=#`1OiFX_G0000000000{{R300000040d5`Wo~16RC#b^a{vheM(yUq2ps*m= +2xUDT;RqCgn#@WzFu~@adfH5^@&-|0000000000{{R30000002WMq&WpinB0jom) +3dE3VMG*K@Uj`&9O$m&URampr+czw5j9K7JLkeYhbY*UHX>V?G015$Qbsj>g6`?# +s5rWnKhSeO?L~x^!;Y#eFP|P}0Z%Ez&X0(@tkHmR7VBa*7>vj^5vkt5f(LFa*EmC +9=2$WE90000000000{{R30000003v_Z}ZgXjLX>V?G015##QV*^ZmKt8YDf|&5KZ +Q>65I6*X)C9iYp+?yjr7~y%y~l5O%01=Zemts_^ihfD_#u#I +JXH5*Wys5xLU4JrSgP3@8bSFd6H|0e8x)RV#2vcKdWo=M0Sp%uJ^vU*QJ`JCB}1fCDqcO!XNk(`C +#ZoeEA)wskqc*RZ(?C=RC#b^a{vkf)$WoGNr}5vZY(~FzYeIdN`S$)9l7ap=09=fBme*a000000RI300000 +0019t+Ze?Utd2nTO015$z{^Dg=h-~N_zJ`Red1EINWrM}GXaQb}6c#qIM2EQnILZ +{@g(An}If6!%vcs8JbyKG3$_x(S=#`1OiFX_G0000000000{{R300000040d5`Wo +~16RC#b^a{vheM(yUq2ps*m=2xUDT;RqCgn#@WzFu~@adfH5^@&-|0000000000{ +{R30000002WMq&WpinB0jom)3dE3VMG*K@Uj`&9O$m&URampr+czw5j9K7JLkeYh +bY*UHX>V?G015$Qbsj>g6`?#s5rWnKhSeO?L~x^!;Y#eFP|P}0Z%Ez&X0(@tkHmR +7VBa*7>vj^5vkt5f(LFa*EmC9=2$WE90000000000{{R30000003v_Z}ZgXjLX>V +?G015##QV*^ZmKt8YDf|&5KZQ>65I6*X)C9iYp+?yjr7~y%y~l5O%01=Zemts_^i +hfD_#u#IJXH5*Wys5xLU4JrSgP3@8bSFd6H|0e8x)RV#22*2 +lX>fD|0RRPIY;{&`00jX7qWbEda9o^`%-h{Y?T>Kfj`b9SKFB^?WVLEr!&9xW3sZ +DqbY)XxXk~3-1OxyJWMyM)VRB(~X?A4*00039W_507X<}?;00jX7`Sh#^X0AbZX4 +L%*5q$))*;M@wXI>IJVg&1PPwC}G0t$0Lb#i5700jX8mhlje(O07Bx5UR;5 ++serGWs~V=@2m@wjb^+R(Q4?4eR(6nw`@6CZd +7@2WdSr&53UoI8eY9A{1GERg--GiI0S#x1is&)M%fmnGH3{GWprU=VRT^t2mk;;0 +000000000|Nj60000002WM<=Vqt7^0owP`H}~XwW|nkt{7-&IWbpPi(wX$0pXUqF +<#0Z84+d#&aCLNZ0r_}MpteKaIeZ@3SB*1_H_;r+;!45jrPr5ftu@@z<*O39}j`u&O7io3b$Is?RA$O%POaVQzD2bZKvHLUnFrY-I)l2x +)F`b#zT(Z~zJd^=uPjBlbC`N(qzPM@Gr{imSMTSY5T*7C#t%#3&jHA>%$n#j0HLD +JN5-IKgM_J7b(p+0MPGk2Gl)y2(Rz0hP$+dLDIRU(}XWLTZugenOC;Z(5k~zEJnJ +iX;;E#Q^{S000000RR600000001#_#Z+C7~a$#@6CZgT(%0hP$+dLDIRU(}X +WLTZugenOC;Z(5k~zEJnJiX;;E#R2R@6CZc}4uWo=;w1qf|rbYWy+bYTLP@e +q&ESEA{+#K&0@B#p*0`Z(jSln|eUa_5s>PIZ}U1fvw5rj-B|XP@r^w5ufb=C_Ju$ +l1`nW&GEpSWb-xXKZg`VQg~%3IWybk`76TvuW{aQ_%-X`?VwZ$5L?~`!+pRSq0(b +70UrO!8D=zpn(&o-7tVWUa<1Q{n`|;)uYyv!)~4rGOBq10000000030000000000 +6X>M?JbaMa-0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdAr8G@<&SffJ +|QFn~N>u=2wF+7z(Wqt=tdZk`V^s(Ana000000093000000000YNb8~5DZf#|5ba +Ma-0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdAr8G@<&SffJ|QFn~N>u +=2wF+7z(Wqt=tdZk`V^s(Ana000000093000000000SgVQgh?V`*h`00{v`?dHP> +9R0ZFSEMRj;Km4qfBYZ5UUs>0bg9bqiCNA70000000030000000000ERB~Z%b7^# +GZ*Ek1aAgGn0006SRC#b^WI=OtX=iS8LTqVnWK(5fY*ctqbaDg)01ISgV{Bn^VRU +JBWdH>M00;rH1vZ#~6S0w{(RI4`cN>c#f1s}6wBY4XHm<^|-YI4P0000000030{{ +R30000012xfI|XK7+=WdH>M00;pqWj;1%d`l;`|9P5nOOx +7YOm0000000030{{R30000023UhRFbz^jOa%E%y1pxpE0g7pkX`g;+>REzyBm9wo +R4fMkGNeGN3DfiLPnSEI8vp7hxcI*rY&UL5{22fM000000096000000000SAVQgh?V`*h`1pxpF0Y>fS!w +4MxxaL=+DqP^k2!wz9AHH68xp8!<%Jqp^&Hw-a000000RI300000001H-OY-Mg^c +~p6DWd#8M00IeCZ)s#xbYXO51pxp601a1ZbZ%vHb3txnXm4@`0t$C&bZ%vHb5C+) +0m2^a+yK+Q;_HtBn{qn)u@JyEm+8*~Xc?3hrUVCR$_aOAbZ%vHb4g?YiECIT&Bl; +lSX#$ms8AQN7m&qYI@o0Ra +xbxa~M%Zlr^{H1ibsRCVcA*+(@K+$R_oJY%-uiLn6)Z)RpgXklq?0000AS7~%^Wp +i^-Z*v9$254nzXJ~W)00aqiX>Db5bYX39002l2SVL%GX>LJoV`y)3Q)P4n0sseMX +>?<6X>I@o0Rh_JVJAtjgJdT_Z|>M2sS?MtJl#qTQVPp!*((IXOHBa=Y-w?IX=DHe +0Rh_JVJAtjgJdT_Z|>M2sS?MtJl#qTQVPp!*((IXOHCA5Lug@XZbEEnZe&wsVQf@ +*P;_zx0sseMX>?<6X>I@o0Rm2R0vHR+edZy`|Kv*>uVxkpmL}Eg3U`IlNoAa7B+E +u8s4h^n+Zt?u@<&aTIfpUd`<+;gOgf;C*Zs6&x77g#Y-w?IX=DHe0Rm2R0vHR+ed +Zy`|Kv*>uVxkpmL}Eg3U`IlNoAa7B+Eu8s4h^n+Zt?u@<&aTIfpUd`<+;gOgf;C* +Zs6&x78C^Lug@XZbEEnZe&wsVQf@*X=DTf00&}ebYpL6ZU6-V0#0-S7z@jN<{`@e +{OM>iY*&c?b?aZznm(1ly +i>j4IAX>oOFWB>&L0#0-S7z@jN<{`@e{OM>iY*&c?b?aZznm(1lyi>lRo;Xklq?MR;&*X=7=0Q)OXnRCsA*1O +fmDVrg_^Z)t7-1pxw1bOIO)%YEh{%Kzj`8?R;-2bLz)>LL?_X=DTf00&}ebYpL6ZU6-V0`+VYVk7oB +r%DNv+($;q`HHK!gIHa)*%m(-e#9sm3ZsHT^UK%K(4i9Ajp1M~R@C@!4#dQE#lUD +;OiKi1RsjZVX>oOFWB>&L0`+VYVk7oBr%DNv+($;q`HHK!gIHa)*%m(-e#9sm3Zs +HT^UK%K(4i9Ajp1M~R@C@!4#dQE#lUD;OiKi1Rs -----END STRICT TYPE LIB----- diff --git a/stl/RGB@0.1.0.stl b/stl/RGB@0.1.0.stl index f3df00c2..fbfb14a3 100644 Binary files a/stl/RGB@0.1.0.stl and b/stl/RGB@0.1.0.stl differ diff --git a/stl/RGB@0.1.0.sty b/stl/RGB@0.1.0.sty index ce684936..557e991a 100644 --- a/stl/RGB@0.1.0.sty +++ b/stl/RGB@0.1.0.sty @@ -1,5 +1,5 @@ {- - Id: urn:ubideco:stl:2PcZtrPrfQCu27qw8b4Wz4cEqUn2PpgSkDHwF4qVyyrq#russian-child-member + Id: urn:ubideco:stl:ENn5cEDW7QUStLzY6HBXjZFARAbrGHv3tXmdQ3QGzoU3#option-data-mimosa Name: RGB Version: 0.1.0 Description: Consensus layer for RGB smart contracts @@ -8,142 +8,163 @@ License: Apache-2.0 -} +@context typelib RGB -import urn:ubideco:stl:ZtHaBzu9ojbDahaGKEXe5v9DfSDxLERbLkEB23R6Q6V#rhino-cover-frog as CommitVerify --- Imports: --- MerkleProof := urn:ubideco:semid:4E7NDL8Nm1EXtcenS9idAx1LAXvTu2wRdYsxT8Q2hgRC#carol-alamo-denver --- MerkleNode := urn:ubideco:semid:6kxYeCatpncbA9UiTdsFbxbxJdU56x6MdmTRkEeGAv6R#iceberg-rocket-velvet - -import urn:ubideco:stl:5XLKQ1sNryZm9bdFKU2kBY3MPYdZXhchVdQKBbHA3gby#south-strong-welcome as StrictTypes --- Imports: --- Primitive := urn:ubideco:semid:3T3zMmQxuir7TsdjhBLaETJfLH4mr5amAseXDePnzhMT#hobby-cable-puzzle --- Variant := urn:ubideco:semid:3kQKwMdjA637pgAS3nF6SBooJrEbSNemqYtfZUYWinS6#tractor-sofia-company --- TypeSystem := urn:ubideco:semid:47es12nMYaA5M7zMejQHAydsRPW6juta8ensLigXMBDP#linda-yellow-rival --- VariantInfoSemId := urn:ubideco:semid:4Lhtbe9Fk5Xi5w1rYmY6VcNHKiPzvbBE9Z7ox8JYLfGF#star-consul-english --- UnionVariantsSemId := urn:ubideco:semid:5B1DxehrbHq1bwC671nskfn2wVqDjMLkuaS7bpC3VxJk#studio-modern-nuclear --- EnumVariants := urn:ubideco:semid:6Zt75MUKawbZuckCDFLEtanNvFbsoGZo7hdwdy6TJytE#list-sherman-viking --- UnnamedFieldsSemId := urn:ubideco:semid:7mWKWSN4oLP5RHpJp2ofSR2DmPLnoGWnSdaT7XkLjJDL#hippie-world-sandra --- NamedFieldsSemId := urn:ubideco:semid:7t4xRL7UV1zB1pm8nT6mM7LQTKDXrhJtCpXXeY1DdWTi#jordan-kiwi-nickel --- FieldSemId := urn:ubideco:semid:7xPYsYdNDXSyVVY1FFRMkwYzn6ggw8PXV45A8vtdGGrK#speed-patriot-gallery --- SemId := urn:ubideco:semid:8Ckj2p3GLKina636pSKJkj7GB6ft8XeoP4jfGkRUNwtp#cargo-plasma-catalog --- TySemId := urn:ubideco:semid:9CmodzHmcjTizoBRGs6QuGgeBugHz1HinSdWyuXiTKea#vista-edgar-dominic --- Ident := urn:ubideco:semid:9SkVki7nQ7WRGN2ayWjySv7QSh6ftrakdNRbE2sSbUYw#connect-fragile-exile --- Sizing := urn:ubideco:semid:9jnMbAs5A91zjK9KDrLuFH42WtinmB8GY6JE6BMY31hw#canoe-gordon-amazon --- FieldName := urn:ubideco:semid:CK7zqXpkDGwatYDy1bVHoARAq1xTi85DFueWrZdFE7du#orient-spell-talent - -import urn:ubideco:stl:8wHziC7Bxa3BwctUh6EVBanosrvRHecCTPUjkZT4btNd#ruby-heaven-madrid as BPCore --- Imports: --- TapretNodePartner := urn:ubideco:semid:6o6mGBNbDXJCcNgk5ohP6wgXcdXZvYd1ZWy1GMBy5q2#iceberg-poker-active --- ExplicitSealTxid := urn:ubideco:semid:FxnQvXfa6koZmm6uyZCPwnGrMi3UzY588kKN9ipN72L#antenna-darwin-emotion --- TapretProof := urn:ubideco:semid:24LBor5ZVKjGk4uBbEb28w6D7rroV3mpVAntNAWQsYaP#forum-paint-tunnel --- TapretPathProof := urn:ubideco:semid:2LANtvWZDRes61SHKFxtFPzSuTzaKQGCUvYsNowNf3n3#stage-element-update --- AnchorMerkleProofTapretProof := urn:ubideco:semid:2RRuXmkGM51gpruJzNCL6mSFm7nQFrP6zXm6CmNr77uE#arcade-modest-fossil --- Method := urn:ubideco:semid:49Mf3pFa3gZNQXJarv9nKCMrZ3NFn2ME9Q3dCAsXhpAe#trilogy-tahiti-valid --- TapretRightBranch := urn:ubideco:semid:4nZtVVw7QJaMDHYffkHBWhxXSkLXLcJ89qTLZH4Z3xck#basket-prelude-bridge --- BlindSealTxPtr := urn:ubideco:semid:5ircUcbD1UjEKsAKMcvdfjS9UcVCEcs47BWAZ5UDqYdr#austria-icon-waiter --- OpretProof := urn:ubideco:semid:5oMeVsXXeicrdvrCCEZQiKWcrDHy4nQPbaQGhtnwM3ug#segment-ambient-totem --- AnchorMerkleProofOpretProof := urn:ubideco:semid:7mkYAw62Vi8BuyQ16qGg3bgFw8WVtTXUkJoYBv1qoNg4#tape-mental-legacy --- SecretSeal := urn:ubideco:semid:81NKrdc9pBoBjsKaGBVN9wXLG4tKjkK4f8DLj7TNMZxh#santana-domingo-needle --- BlindSealTxid := urn:ubideco:semid:Cu4G4njDjd2mgmz4FsvFAwRKwBpksmZ9CB9AJhSNx5dk#kimono-golf-price --- TxPtr := urn:ubideco:semid:CyRtMpPJkKLX3AdhgY7ZyA7PnYAzCo7yFTeYwwGsUBhn#strange-source-father - -import urn:ubideco:stl:9KALDYR8Nyjq4FdMW6kYoL7vdkWnqPqNuFnmE9qHpNjZ#justice-rocket-type as Std --- Imports: --- Bool := urn:ubideco:semid:7ZhBHGSJm9ixmm8Z9vCX7i5Ga7j5xrW8t11nsb1Cgpnx#laser-madam-maxwell --- AlphaNumLodash := urn:ubideco:semid:8iBe2dh8beD1KUairdqCacEcxAr4h55XfUQN2PspWXjz#north-sound-salsa - -import urn:ubideco:stl:DVtm25LRKU4TjbyZmVxPhvCmctZ6vKkPKqfpU2QsDNUo#exodus-axiom-tommy as AluVM --- Imports: --- LibSite := urn:ubideco:semid:8Q9NNyK2PCcjZ7U7rDGUJBhk8q37hAnWLgSizGLmr56g#mission-papa-mercy --- LibId := urn:ubideco:semid:CFdqBJb1FVEwSwuQp47acj2bCFJgJn9J9NKVdoZuG625#rebel-factor-rodeo - -import urn:ubideco:stl:HX2UBak8vPsTokug1DGMDvTpzns3xUdwZ7QJdyt4qBA9#speed-atlanta-trilogy as Bitcoin --- Imports: --- Vout := urn:ubideco:semid:3HHRtSJW5fnGkdVW1EVDH7B97Y79WhwvKyyfsaBkuQkk#chrome-robin-gallop --- ScriptBytes := urn:ubideco:semid:3Y4AgjkFbDusgo3YqRDWv9BznDeAJEUDEPeEq1mpSkAR#maestro-source-jackson --- TapNodeHash := urn:ubideco:semid:4M8xyvABKKKJseN6Pme5eKrAuusMNMXoY5s6ifsEcreC#crash-culture-jamaica --- LeafScript := urn:ubideco:semid:7SUbonQ62tSaBTPpbZPACQo2NogXodi2mW5WEEDfBvp4#brenda-round-micro --- Txid := urn:ubideco:semid:C1GfCrG7AXu2sFhRBspd7KpJK2YgyTkVy6pty5rZynRs#cowboy-diego-betty --- InternalPk := urn:ubideco:semid:CQjz6cdRfD4cr8oUKmgBUEVkjbcNJ5L8eLc7qGeNHQVu#meter-nerve-chicken --- LeafVer := urn:ubideco:semid:DGELfUvcU62GNQRo7HaMbKDzYQwdYRMW3b91JHd4d3WY#tunnel-lagoon-cowboy --- XOnlyPk := urn:ubideco:semid:J1BbH2Lx8P3yw9G244d92MMTP5jrkiaVzsr6FzRxpfur#evident-finance-promo - - - --- urn:ubideco:semid:EVMd4HiFWvuPQv5JaVPecRY8oyqRNR92gxYUaCFFWqXp#banana-mouse-plaster -data AltLayer1 :: liquid:1 - --- urn:ubideco:semid:AWiT5HsZJueysPSX7FUubH1GjiTnADaHdUv6fNZKxHnB#salmon-taxi-ohio -data AltLayer1Set :: {AltLayer1 ^ ..0xff} --- urn:ubideco:semid:ByCxcZ2hYTTJ8yoUhpUuHaxceQoAjqsxSF9zJkED3JuM#soviet-arsenal-complex -data AluScript :: libs {AluVM.LibId -> ^ ..0xff [Byte]}, entryPoints {[Byte ^ 3] -> AluVM.LibSite {- urn:ubideco:semid:8Q9NNyK2PCcjZ7U7rDGUJBhk8q37hAnWLgSizGLmr56g#mission-papa-mercy -}} --- urn:ubideco:semid:4GL38RVDhs4JkL5phqyF6pguwL6Av8qTUWCVNfGeWdUg#history-joel-ivory -data AnchorSet :: tapret:1 BPCore.AnchorMerkleProofTapretProof {- urn:ubideco:semid:2RRuXmkGM51gpruJzNCL6mSFm7nQFrP6zXm6CmNr77uE#arcade-modest-fossil -} - | opret BPCore.AnchorMerkleProofOpretProof {- urn:ubideco:semid:7mkYAw62Vi8BuyQ16qGg3bgFw8WVtTXUkJoYBv1qoNg4#tape-mental-legacy -} - | dual (tapret BPCore.AnchorMerkleProofTapretProof {- urn:ubideco:semid:2RRuXmkGM51gpruJzNCL6mSFm7nQFrP6zXm6CmNr77uE#arcade-modest-fossil -}, opret BPCore.AnchorMerkleProofOpretProof {- urn:ubideco:semid:7mkYAw62Vi8BuyQ16qGg3bgFw8WVtTXUkJoYBv1qoNg4#tape-mental-legacy -}) --- urn:ubideco:semid:8N8sQGRwEmmxKLwUiE4GQ89ziPzgBi7BfSjaNz9ozRKv#verbal-slow-lemon -data AnchoredBundle :: anchor XChainAnchorSet, bundle TransitionBundle --- urn:ubideco:semid:EZoxBpGenvb9UVze1zuwuEHqQJAqw2m3T8za5gbX1JZk#buzzer-pattern-craft -data AssetTag :: [Byte ^ 32] --- urn:ubideco:semid:86oEReUQtpkBF5ag57qt8QYeRoADcnsYVWUhd1hZYF9B#police-castle-fractal -data AssignRevealedAttachBlindSealTxPtr :: confidential (seal XChainSecretSeal, state ConcealedAttach) +import CommitVerify#4SZ2EgWWtC5LsNXmNpAzogNHZoaZNTCwU3SQhAYwDX6A#citizen-fiction-corner + use MerkleHash#culture-metro-modular + use MerkleProof#labor-hilton-magenta + +import Std#55f8bsTvyh7zAeYAiNwL9G1DxgwXzDvE8edcTFJz3Q9H#milan-poncho-gray + use Bool#laser-madam-maxwell + use AlphaNumLodash#north-sound-salsa + +import BPCore#6HFQ83t33zW6PgG2pWpXM3HuEUFXAgUjheYiQa2Jdb9c#jester-lorenzo-address + use TapretNodePartner#iceberg-poker-active + use ExplicitSealTxid#antenna-darwin-emotion + use TapretProof#forum-paint-tunnel + use TapretPathProof#stage-element-update + use Method#trilogy-tahiti-valid + use TapretRightBranch#basket-prelude-bridge + use BlindSealTxPtr#austria-icon-waiter + use OpretProof#segment-ambient-totem + use SecretSeal#santana-domingo-needle + use AnchorMerkleProofOpretProof#mammal-ethnic-crown + use BlindSealTxid#kimono-golf-price + use TxPtr#strange-source-father + use AnchorMerkleProofTapretProof#forward-chemist-panda + +import StrictTypes#BADMWBVQ6sMJGfELP13cjeZPNutGuLzZtNNZirJQsz9e#tower-monaco-corona + use VariantName#snow-gray-extreme + use Primitive#hobby-cable-puzzle + use VariantInfoSemId#clone-panama-guru + use UnnamedFieldsSemId#hippie-world-sandra + use NamedFieldsSemId#jordan-kiwi-nickel + use FieldSemId#speed-patriot-gallery + use SemId#cargo-plasma-catalog + use Ident#connect-fragile-exile + use Sizing#canoe-gordon-amazon + use EnumVariants#correct-dream-albert + use TypeSystem#panel-data-lazarus + use FieldName#orient-spell-talent + use TySemId#kimono-catalog-mango + use Variant#textile-cowboy-dragon + use UnionVariantsSemId#iceberg-road-crack + +import AluVM#DVtm25LRKU4TjbyZmVxPhvCmctZ6vKkPKqfpU2QsDNUo#exodus-axiom-tommy + use LibSite#mission-papa-mercy + use LibId#rebel-factor-rodeo + +import Bitcoin#HX2UBak8vPsTokug1DGMDvTpzns3xUdwZ7QJdyt4qBA9#speed-atlanta-trilogy + use Vout#chrome-robin-gallop + use ScriptBytes#maestro-source-jackson + use TapNodeHash#crash-culture-jamaica + use LeafScript#brenda-round-micro + use Txid#cowboy-diego-betty + use InternalPk#meter-nerve-chicken + use LeafVer#tunnel-lagoon-cowboy + use XOnlyPk#evident-finance-promo + + +@mnemonic(banana-mouse-plaster) +data AltLayer1 : liquid#1 + + +@mnemonic(salmon-taxi-ohio) +data AltLayer1Set : {AltLayer1 ^ ..0xff} + +@mnemonic(soviet-arsenal-complex) +data AluScript : libs {AluVM.LibId -> ^ ..0xff [Byte]}, entryPoints {[Byte ^ 3] -> AluVM.LibSite#mission-papa-mercy} + +@mnemonic(aurora-blast-brown) +data AnchorSet : tapret#1 BPCore.AnchorMerkleProofTapretProof#forward-chemist-panda + | opret BPCore.AnchorMerkleProofOpretProof#mammal-ethnic-crown + | dual (tapret BPCore.AnchorMerkleProofTapretProof#forward-chemist-panda, opret BPCore.AnchorMerkleProofOpretProof#mammal-ethnic-crown) + +@mnemonic(verbal-slow-lemon) +data AnchoredBundle : anchor XChainAnchorSet, bundle TransitionBundle + +@mnemonic(buzzer-pattern-craft) +data AssetTag : [Byte ^ 32] + +@mnemonic(police-castle-fractal) +data AssignRevealedAttachBlindSealTxPtr : confidential (seal XChainSecretSeal, state ConcealedAttach) | confidentialState (seal XChainBlindSealTxPtr, state ConcealedAttach) | confidentialSeal (seal XChainSecretSeal, state RevealedAttach) | revealed (seal XChainBlindSealTxPtr, state RevealedAttach) --- urn:ubideco:semid:GMetkMHmE6pvWF7v4cVkh5FQW1cBWSb4F38oge4Le8wG#parker-locate-madrid -data AssignRevealedAttachBlindSealTxid :: confidential (seal XChainSecretSeal, state ConcealedAttach) + +@mnemonic(parker-locate-madrid) +data AssignRevealedAttachBlindSealTxid : confidential (seal XChainSecretSeal, state ConcealedAttach) | confidentialState (seal XChainBlindSealTxid, state ConcealedAttach) | confidentialSeal (seal XChainSecretSeal, state RevealedAttach) | revealed (seal XChainBlindSealTxid, state RevealedAttach) --- urn:ubideco:semid:AbqXzWbeC4QTe3RGDg1tgZoq8Cg79wPfgxC418mbLZWc#fabric-exotic-road -data AssignRevealedDataBlindSealTxPtr :: confidential (seal XChainSecretSeal, state ConcealedData) + +@mnemonic(fabric-exotic-road) +data AssignRevealedDataBlindSealTxPtr : confidential (seal XChainSecretSeal, state ConcealedData) | confidentialState (seal XChainBlindSealTxPtr, state ConcealedData) | confidentialSeal (seal XChainSecretSeal, state RevealedData) | revealed (seal XChainBlindSealTxPtr, state RevealedData) --- urn:ubideco:semid:8DRTcwcPXjALBUhs8QSutcQj4KyxejP6nVGpmSPcma5s#iron-design-king -data AssignRevealedDataBlindSealTxid :: confidential (seal XChainSecretSeal, state ConcealedData) + +@mnemonic(iron-design-king) +data AssignRevealedDataBlindSealTxid : confidential (seal XChainSecretSeal, state ConcealedData) | confidentialState (seal XChainBlindSealTxid, state ConcealedData) | confidentialSeal (seal XChainSecretSeal, state RevealedData) | revealed (seal XChainBlindSealTxid, state RevealedData) --- urn:ubideco:semid:HpDAZ3iWVWNFP5oUrXNSifNop1wHGmfK7csUXkWbf3jE#avatar-house-ammonia -data AssignRevealedValueBlindSealTxPtr :: confidential (seal XChainSecretSeal, state ConcealedFungible) + +@mnemonic(avatar-house-ammonia) +data AssignRevealedValueBlindSealTxPtr : confidential (seal XChainSecretSeal, state ConcealedFungible) | confidentialState (seal XChainBlindSealTxPtr, state ConcealedFungible) | confidentialSeal (seal XChainSecretSeal, state RevealedFungible) | revealed (seal XChainBlindSealTxPtr, state RevealedFungible) --- urn:ubideco:semid:DFdcr9izr4NmVJJojKFXWPPYnWVM3RNU2K6oxMhDZmYx#popular-vista-urgent -data AssignRevealedValueBlindSealTxid :: confidential (seal XChainSecretSeal, state ConcealedFungible) + +@mnemonic(popular-vista-urgent) +data AssignRevealedValueBlindSealTxid : confidential (seal XChainSecretSeal, state ConcealedFungible) | confidentialState (seal XChainBlindSealTxid, state ConcealedFungible) | confidentialSeal (seal XChainSecretSeal, state RevealedFungible) | revealed (seal XChainBlindSealTxid, state RevealedFungible) --- urn:ubideco:semid:6Nr3ZJAAV8ukSmVJHChmUkbGFzdAbCjzXbmoxrDNcmwc#slogan-change-green -data AssignVoidStateBlindSealTxPtr :: confidential (seal XChainSecretSeal, state VoidState) + +@mnemonic(slogan-change-green) +data AssignVoidStateBlindSealTxPtr : confidential (seal XChainSecretSeal, state VoidState) | confidentialState (seal XChainBlindSealTxPtr, state VoidState) | confidentialSeal (seal XChainSecretSeal, state VoidState) | revealed (seal XChainBlindSealTxPtr, state VoidState) --- urn:ubideco:semid:BqQbSTu2tdDVLMnTx2rpKFYF47oEwrc2fGrTZGzDrueV#classic-cubic-ingrid -data AssignVoidStateBlindSealTxid :: confidential (seal XChainSecretSeal, state VoidState) + +@mnemonic(classic-cubic-ingrid) +data AssignVoidStateBlindSealTxid : confidential (seal XChainSecretSeal, state VoidState) | confidentialState (seal XChainBlindSealTxid, state VoidState) | confidentialSeal (seal XChainSecretSeal, state VoidState) | revealed (seal XChainBlindSealTxid, state VoidState) --- urn:ubideco:semid:A9sThAqgwKPfuJcR4GDfTQHUAbbS5sbEXG5XVk7FZHEg#hunter-hello-retro -data AssignmentType :: U16 --- urn:ubideco:semid:Bu8iXz4MmJnuUMW6AFAepa8BAa4DXLVAMdrNrkLh3S7a#granite-history-canvas -data AssignmentsBlindSealTxPtr :: {AssignmentType -> ^ ..0xff TypedAssignsBlindSealTxPtr} --- urn:ubideco:semid:7ZGXPWXsK641fCB8nipeDy4ZR9BTQ9Q8c9E2vj2ufNq5#center-nevada-promise -data AssignmentsBlindSealTxid :: {AssignmentType -> ^ ..0xff TypedAssignsBlindSealTxid} --- urn:ubideco:semid:9uzoSojhudYvNZYgTmJ5sMwwxzLtdLnfUeudT6Ro8i23#delta-member-agenda -data AttachId :: [Byte ^ 32] --- urn:ubideco:semid:9zzp5XyDaLvZSGhCEWtey1Y7xdD1soEYdGaimjyZexyf#agenda-ivory-blast -data BlindingFactor :: [Byte ^ 32] --- urn:ubideco:semid:HyVyGxhRswAZ3BHJqx6PKmcEGCUSHaL1Rc7qxxi811qE#pizza-natural-cyclone -data ConcealedAttach :: [Byte ^ 32] --- urn:ubideco:semid:8YQWVpKJBaYsAwrXvuLDNEDEKRZxfoQJpu1G7X2ZN1tL#mirage-invite-newton -data ConcealedData :: [Byte ^ 32] --- urn:ubideco:semid:5UUVzBtqMkymxQmDry4ay4aoXLLojTQQyHGrdSWis3Jt#window-basket-actor -data ConcealedFungible :: commitment PedersenCommitment, rangeProof RangeProof --- urn:ubideco:semid:AKAMGBAMmu7DZ9kMpwqSfDepEJf5PUB6BsufJ4zz88QB#beast-korea-perfect -data ContractHistory :: schemaId SchemaId + +@mnemonic(hunter-hello-retro) +data AssignmentType : U16 + +@mnemonic(explain-nato-passage) +data AssignmentWitness : absent () + | present XChainTxid + +@mnemonic(granite-history-canvas) +data AssignmentsBlindSealTxPtr : {AssignmentType -> ^ ..0xff TypedAssignsBlindSealTxPtr} + +@mnemonic(center-nevada-promise) +data AssignmentsBlindSealTxid : {AssignmentType -> ^ ..0xff TypedAssignsBlindSealTxid} + +@mnemonic(delta-member-agenda) +data AttachId : [Byte ^ 32] + +@mnemonic(agenda-ivory-blast) +data BlindingFactor : [Byte ^ 32] + +@mnemonic(pizza-natural-cyclone) +data ConcealedAttach : [Byte ^ 32] + +@mnemonic(mirage-invite-newton) +data ConcealedData : [Byte ^ 32] + +@mnemonic(window-basket-actor) +data ConcealedFungible : commitment PedersenCommitment, rangeProof RangeProof + +@mnemonic(beast-korea-perfect) +data ContractHistory : schemaId SchemaId , rootSchemaId SchemaId? , contractId ContractId , global {GlobalStateType -> ^ ..0xff {GlobalOrd -> ^ ..0xffffffff RevealedData}} @@ -151,12 +172,18 @@ data ContractHistory :: schemaId SchemaId , fungibles {OutputAssignmentRevealedValue ^ ..0xffffffff} , data {OutputAssignmentRevealedData ^ ..0xffffffff} , attach {OutputAssignmentRevealedAttach ^ ..0xffffffff} --- urn:ubideco:semid:Bho42Xw8wPy2nWxgz6H51rNdBBusaPyrVQT8VypvpZ3w#alarm-danube-vampire -data ContractId :: [Byte ^ 32] --- urn:ubideco:semid:AGRkqu4XCz7HJnTiG3DbE6xvMrU1D9vwH2gtJiuHtAyQ#client-major-stamp -data ContractState :: schema SchemaSchema, history ContractHistory --- urn:ubideco:semid:4wCasNtcxRnicsUakyXzzRdzemmUk8deBzrCqyRLiesL#deluxe-history-acrobat -data Extension :: ffv Ffv + +@mnemonic(alarm-danube-vampire) +data ContractId : [Byte ^ 32] + +@mnemonic(client-major-stamp) +data ContractState : schema SchemaSchema, history ContractHistory + +@mnemonic(diana-archive-liquid) +data DataState : [Byte] + +@mnemonic(deluxe-history-acrobat) +data Extension : ffv Ffv , contractId ContractId , extensionType ExtensionType , metadata [Byte] @@ -164,102 +191,133 @@ data Extension :: ffv Ffv , assignments AssignmentsBlindSealTxid , redeemed Redeemed , valencies Valencies --- urn:ubideco:semid:5EA8tZw7MhL13SCX33m98QLykB6iZFJ3ynukkiCqnh6U#peace-tiger-elastic -data ExtensionSchema :: metadata StrictTypes.SemId {- urn:ubideco:semid:8Ckj2p3GLKina636pSKJkj7GB6ft8XeoP4jfGkRUNwtp#cargo-plasma-catalog -} + +@mnemonic(peace-tiger-elastic) +data ExtensionSchema : metadata StrictTypes.SemId#cargo-plasma-catalog , globals {GlobalStateType -> ^ ..0xff Occurrences} , redeems {ValencyType ^ ..0xff} , assignments {AssignmentType -> ^ ..0xff Occurrences} , valencies {ValencyType ^ ..0xff} --- urn:ubideco:semid:7m9MHRdHSXnhYiheDeXybxnHAxPRgs84USnVELFH98Cd#mission-salsa-parole -data ExtensionType :: U16 --- urn:ubideco:semid:FiMEyh3t5FKEsUqVTgQFYJ5XfJF9m2RwKMN9NckympSG#silence-motel-toronto -data Ffv :: U16 --- urn:ubideco:semid:CD8fR4UCdn4ZE6Y6bNPFkDpXdMCMH1Y8nVPx7NGqqYHB#natasha-profit-winter -data FungibleState :: bits64:8 U64 --- urn:ubideco:semid:HpiuYTT7BuhCmoNs2GrwNrHNUx3i3yf6GjDiFphLKeQV#profit-bazooka-present -data FungibleType :: unsigned64Bit:8 - --- urn:ubideco:semid:F7ZK3wjiiBY57d8tMRbXW6nsDb86Lnjbq1GXRvbGv34c#relax-emotion-nitro -data Genesis :: ffv Ffv + +@mnemonic(mission-salsa-parole) +data ExtensionType : U16 + +@mnemonic(silence-motel-toronto) +data Ffv : U16 + +@mnemonic(natasha-profit-winter) +data FungibleState : bits64#8 U64 + +@mnemonic(profit-bazooka-present) +data FungibleType : unsigned64Bit#8 + + +@mnemonic(relax-emotion-nitro) +data Genesis : ffv Ffv , schemaId SchemaId - , testnet Std.Bool {- urn:ubideco:semid:7ZhBHGSJm9ixmm8Z9vCX7i5Ga7j5xrW8t11nsb1Cgpnx#laser-madam-maxwell -} + , testnet Std.Bool#laser-madam-maxwell , altLayers1 AltLayer1Set , metadata [Byte] , globals GlobalState , assignments AssignmentsBlindSealTxid , valencies Valencies --- urn:ubideco:semid:7vb54CDdNg8xJtKZjnbYReqaxHAdmbfoFezH8CsLQWsS#andrea-amigo-grid -data GenesisSchema :: metadata StrictTypes.SemId {- urn:ubideco:semid:8Ckj2p3GLKina636pSKJkj7GB6ft8XeoP4jfGkRUNwtp#cargo-plasma-catalog -} + +@mnemonic(andrea-amigo-grid) +data GenesisSchema : metadata StrictTypes.SemId#cargo-plasma-catalog , globals {GlobalStateType -> ^ ..0xff Occurrences} , assignments {AssignmentType -> ^ ..0xff Occurrences} , valencies {ValencyType ^ ..0xff} --- urn:ubideco:semid:9UUjMhuGNyLiWhT9hC2wCVfzBfABUHMtqcEqVykQTTBm#north-llama-empire -data GlobalOrd :: witnessAnchor WitnessAnchor?, idx U16 --- urn:ubideco:semid:Ekg4cNmYPqSZn14jQ4GD2tStBFX6S6aUk5bmLDRTaap8#ranger-middle-roman -data GlobalState :: {GlobalStateType -> ^ ..0xff GlobalValues} --- urn:ubideco:semid:ES98zed1FQ1XHZJptvv3ecWF6XFCdQsG1NvtkADYkugP#night-mixer-monaco -data GlobalStateSchema :: semId StrictTypes.SemId {- urn:ubideco:semid:8Ckj2p3GLKina636pSKJkj7GB6ft8XeoP4jfGkRUNwtp#cargo-plasma-catalog -}, maxItems U16 --- urn:ubideco:semid:FQ6qHu9gQzjZu3i7dasU7T1PGi4qZi1a4goxJbHxHkbU#seminar-major-tape -data GlobalStateType :: U16 --- urn:ubideco:semid:AnBpS97EbffL9PYZLfHKESeLoNeosEbLinQM9VqGeG2x#bicycle-europe-shampoo -data GlobalValues :: [RevealedData ^ 1..] --- urn:ubideco:semid:MXcKv35FafL8vRPoxfaZaG96L3bLiNsTtfsJiCLwc23#classic-chariot-domino -data Input :: prevOut Opout, reserved ReservedByte --- urn:ubideco:semid:4Pv4CN7nfHbbKyoEBvRVrnihhv7uP8y6QNi6FNRCNjUq#puzzle-guru-oregano -data Inputs :: {Input ^ ..0xff} --- urn:ubideco:semid:5TNhPhpZzE6iDWXaUpdsTAwVsCZj5e9Z8AqFU1ii6HHa#light-nelson-brain -data MediaType :: any:255 - --- urn:ubideco:semid:33ug4TwTBFQxz7D3YdFmwpKET415dv5zQRh5CkavC5fL#deal-orca-aztec -data NoiseDumb :: [Byte ^ 512] --- urn:ubideco:semid:4gjtVBchJQ5f1aAzoyxYWeGp6qZi9dPudJCbWKYKhw1a#unicorn-empire-mama -data Occurrences :: min U16, max U16 --- urn:ubideco:semid:B5hRc3ekuQsCAgsk8dmPVfytVDbvECJ3g2ANqrwSLE2p#slow-samuel-ceramic -data OpId :: [Byte ^ 32] --- urn:ubideco:semid:8EYQPboNCwpv9Nt9FQ47idjzNwCFBtDzRUmAuYEheahW#shallow-match-tokyo -data Opout :: op OpId + +@mnemonic(north-llama-empire) +data GlobalOrd : witnessAnchor WitnessAnchor?, idx U16 + +@mnemonic(ranger-middle-roman) +data GlobalState : {GlobalStateType -> ^ ..0xff GlobalValues} + +@mnemonic(night-mixer-monaco) +data GlobalStateSchema : semId StrictTypes.SemId#cargo-plasma-catalog, maxItems U16 + +@mnemonic(seminar-major-tape) +data GlobalStateType : U16 + +@mnemonic(bicycle-europe-shampoo) +data GlobalValues : [RevealedData ^ 1..] + +@mnemonic(classic-chariot-domino) +data Input : prevOut Opout, reserved ReservedByte + +@mnemonic(puzzle-guru-oregano) +data Inputs : {Input ^ ..0xff} + +@mnemonic(light-nelson-brain) +data MediaType : any#255 + + +@mnemonic(deal-orca-aztec) +data NoiseDumb : [Byte ^ 512] + +@mnemonic(unicorn-empire-mama) +data Occurrences : min U16, max U16 + +@mnemonic(slow-samuel-ceramic) +data OpId : [Byte ^ 32] + +@mnemonic(shallow-match-tokyo) +data Opout : op OpId , ty AssignmentType , no U16 --- urn:ubideco:semid:6D7oEZGP4eHYSgfJeP1Dyc6Qgc4ph4budoDSuFmtJ5zj#jungle-quota-front -data OutputAssignmentRevealedAttach :: opout Opout + +@mnemonic(think-record-medusa) +data OutputAssignmentRevealedAttach : opout Opout , seal XChainExplicitSealTxid , state RevealedAttach - , witness XChainTxid? --- urn:ubideco:semid:7eRgyX7MZuLw9bdqGZRMJezC36u53CQ8vUsrwpuU3ATz#shake-vega-snow -data OutputAssignmentRevealedData :: opout Opout + , witness AssignmentWitness + +@mnemonic(nectar-nectar-capsule) +data OutputAssignmentRevealedData : opout Opout , seal XChainExplicitSealTxid , state RevealedData - , witness XChainTxid? --- urn:ubideco:semid:4SNmowDSb3dv7WASKKpiRRWsmr9t5VjULSmYRPV3CcyC#burma-plate-degree -data OutputAssignmentRevealedValue :: opout Opout + , witness AssignmentWitness + +@mnemonic(control-boris-motif) +data OutputAssignmentRevealedValue : opout Opout , seal XChainExplicitSealTxid , state RevealedFungible - , witness XChainTxid? --- urn:ubideco:semid:3EAtrfNu9ptxdaoZkCzj2UvzUMSwDci52kkgJoYBWuz3#garden-eagle-bagel -data OutputAssignmentVoidState :: opout Opout + , witness AssignmentWitness + +@mnemonic(avatar-beatles-protein) +data OutputAssignmentVoidState : opout Opout , seal XChainExplicitSealTxid , state VoidState - , witness XChainTxid? --- urn:ubideco:semid:5twbh2U5hyaowidwum1iRNCqebBLxTuZTuNPt3SaRT13#nepal-delta-earth -data PedersenCommitment :: [Byte ^ 33] --- urn:ubideco:semid:73TpZuiyRWAuV9GRSj9H7tDf3JXwVvmT4teTXhKxdue1#invent-stock-result -data RangeProof :: placeholder:255 NoiseDumb --- urn:ubideco:semid:9gee8HH6yNbqyLe9tA3N5zcCTReMDe6y2yfcybWyYApm#scoop-press-scuba -data Redeemed :: {ValencyType -> ^ ..0xff OpId} --- urn:ubideco:semid:5ezr9uJrSdzez89fTCRWvKwGv6coMmQeXizK371oYdZ2#balloon-justin-place -data ReservedByte :: U8 --- urn:ubideco:semid:2odg1kiUEtjxBa9MzQmkyDPxKe2hdt6aASEGQTEHAJYU#cigar-network-event -data RevealedAttach :: id AttachId + , witness AssignmentWitness + +@mnemonic(nepal-delta-earth) +data PedersenCommitment : [Byte ^ 33] + +@mnemonic(invent-stock-result) +data RangeProof : placeholder#255 NoiseDumb + +@mnemonic(scoop-press-scuba) +data Redeemed : {ValencyType -> ^ ..0xff OpId} + +@mnemonic(balloon-justin-place) +data ReservedByte : U8 + +@mnemonic(cigar-network-event) +data RevealedAttach : id AttachId , mediaType MediaType , salt U64 --- urn:ubideco:semid:3DcMJ3YRokNwKN8Cce1ZqsYpiTEuto7EY1szCMEDH97A#velvet-david-manual -data RevealedData :: [Byte] --- urn:ubideco:semid:5rdcWxUW6LxoRQKrPs2EszvTTPrjmKKWPzHeZi1FjWhX#canal-pagoda-ralph -data RevealedFungible :: value FungibleState + +@mnemonic(ivory-bogart-stock) +data RevealedData : value DataState, salt U128 + +@mnemonic(canal-pagoda-ralph) +data RevealedFungible : value FungibleState , blinding BlindingFactor , tag AssetTag --- urn:ubideco:semid:Df1oP2CtYZ1aULEoV5oicwQkNVgGkaFuqW3dktV847k5#margo-mission-virus -data Schema :: ffv Ffv + +@mnemonic(fresh-beatles-empire) +data Schema : ffv Ffv , subsetOf ()? , globalTypes {GlobalStateType -> ^ ..0xff GlobalStateSchema} , ownedTypes {AssignmentType -> ^ ..0xff StateSchema} @@ -267,12 +325,14 @@ data Schema :: ffv Ffv , genesis GenesisSchema , extensions {ExtensionType -> ^ ..0xff ExtensionSchema} , transitions {TransitionType -> ^ ..0xff TransitionSchema} - , typeSystem StrictTypes.TypeSystem {- urn:ubideco:semid:47es12nMYaA5M7zMejQHAydsRPW6juta8ensLigXMBDP#linda-yellow-rival -} + , typeSystem StrictTypes.TypeSystem#panel-data-lazarus , script Script --- urn:ubideco:semid:AyzbMn4ux89LLU8ho1L4pQa5TXsmRdHd79oh6SXdrCmd#garcia-smoke-ozone -data SchemaId :: [Byte ^ 32] --- urn:ubideco:semid:AjnKkNbkCAtjJaTJUW2F36wcPEApCtTWCzm6RUWBVQzB#tourist-monday-exile -data SchemaSchema :: ffv Ffv + +@mnemonic(garcia-smoke-ozone) +data SchemaId : [Byte ^ 32] + +@mnemonic(heaven-object-august) +data SchemaSchema : ffv Ffv , subsetOf Schema? , globalTypes {GlobalStateType -> ^ ..0xff GlobalStateSchema} , ownedTypes {AssignmentType -> ^ ..0xff StateSchema} @@ -280,17 +340,20 @@ data SchemaSchema :: ffv Ffv , genesis GenesisSchema , extensions {ExtensionType -> ^ ..0xff ExtensionSchema} , transitions {TransitionType -> ^ ..0xff TransitionSchema} - , typeSystem StrictTypes.TypeSystem {- urn:ubideco:semid:47es12nMYaA5M7zMejQHAydsRPW6juta8ensLigXMBDP#linda-yellow-rival -} + , typeSystem StrictTypes.TypeSystem#panel-data-lazarus , script Script --- urn:ubideco:semid:HyVVQCc7o1wnC3oo1VTHzcpMuVsvzFBTnSFe6xVSiDAV#process-media-second -data Script :: aluVm AluScript --- urn:ubideco:semid:tECDKfnyyGZgwoorc1VynUBq9unv34u9WvRBUTduoRK#report-agatha-level -data StateSchema :: declarative () + +@mnemonic(process-media-second) +data Script : aluVm AluScript + +@mnemonic(report-agatha-level) +data StateSchema : declarative () | fungible FungibleType - | structured StrictTypes.SemId {- urn:ubideco:semid:8Ckj2p3GLKina636pSKJkj7GB6ft8XeoP4jfGkRUNwtp#cargo-plasma-catalog -} + | structured StrictTypes.SemId#cargo-plasma-catalog | attachment MediaType --- urn:ubideco:semid:GLm25xw5WvH5UBJHQw6FVyZbAHYVjXtS1HtkYVPJ1FjT#folio-barbara-guru -data Transition :: ffv Ffv + +@mnemonic(folio-barbara-guru) +data Transition : ffv Ffv , contractId ContractId , transitionType TransitionType , metadata [Byte] @@ -298,55 +361,73 @@ data Transition :: ffv Ffv , inputs Inputs , assignments AssignmentsBlindSealTxPtr , valencies Valencies --- urn:ubideco:semid:LnohmzqG7bkCL7hAjWd2tUrvEP1Pe5C6oiv5r5KjF2G#boxer-nadia-alias -data TransitionBundle :: inputMap {Bitcoin.Vout -> ^ 1.. OpId}, knownTransitions {OpId -> ^ 1.. Transition} --- urn:ubideco:semid:4d7FmcvNey5X175gyggcn4wftcf7mtGyn6N4r6Ek4roX#fiction-caramel-fractal -data TransitionSchema :: metadata StrictTypes.SemId {- urn:ubideco:semid:8Ckj2p3GLKina636pSKJkj7GB6ft8XeoP4jfGkRUNwtp#cargo-plasma-catalog -} + +@mnemonic(boxer-nadia-alias) +data TransitionBundle : inputMap {Bitcoin.Vout -> ^ 1.. OpId}, knownTransitions {OpId -> ^ 1.. Transition} + +@mnemonic(fiction-caramel-fractal) +data TransitionSchema : metadata StrictTypes.SemId#cargo-plasma-catalog , globals {GlobalStateType -> ^ ..0xff Occurrences} , inputs {AssignmentType -> ^ ..0xff Occurrences} , assignments {AssignmentType -> ^ ..0xff Occurrences} , valencies {ValencyType ^ ..0xff} --- urn:ubideco:semid:4XEmzMLZTXc4XB3njvemMq5qdMmx5EKJPAXpJaBPrqCb#puma-joshua-evita -data TransitionType :: U16 --- urn:ubideco:semid:Gbg8NjDV5x6NnhVzmqksPgAc2hgYzMNcgiu4iHggmQcB#orchid-season-bishop -data TypedAssignsBlindSealTxPtr :: declarative [AssignVoidStateBlindSealTxPtr] + +@mnemonic(puma-joshua-evita) +data TransitionType : U16 + +@mnemonic(orchid-season-bishop) +data TypedAssignsBlindSealTxPtr : declarative [AssignVoidStateBlindSealTxPtr] | fungible [AssignRevealedValueBlindSealTxPtr] | structured [AssignRevealedDataBlindSealTxPtr] - | attachment:255 [AssignRevealedAttachBlindSealTxPtr] --- urn:ubideco:semid:5X4gpjBJD2jiYSSTYrmEb3QZPxHRFDo4TwgUhuZjLVW4#rondo-roman-expand -data TypedAssignsBlindSealTxid :: declarative [AssignVoidStateBlindSealTxid] + | attachment#255 [AssignRevealedAttachBlindSealTxPtr] + +@mnemonic(rondo-roman-expand) +data TypedAssignsBlindSealTxid : declarative [AssignVoidStateBlindSealTxid] | fungible [AssignRevealedValueBlindSealTxid] | structured [AssignRevealedDataBlindSealTxid] - | attachment:255 [AssignRevealedAttachBlindSealTxid] --- urn:ubideco:semid:FXixNMTaiMJMqp5qQCyb67oPrzryjAXxsk6kvsFQoHTi#andy-mango-brother -data Valencies :: {ValencyType ^ ..0xff} --- urn:ubideco:semid:5mswXMrudHpJEnuoLA86YY2VHN5iL56hmKcmh5k1h3e5#palma-exit-pupil -data ValencyType :: U16 --- urn:ubideco:semid:49HkbZvGaJE3phHjLBMQCR3NK1sGA462HJr5BkqQ6YQr#nectar-ceramic-driver -data VoidState :: () --- urn:ubideco:semid:HtyS3FW8duiA8o1TV13jiK5BUJtebY1JvghTkz9sVuNM#henry-prepare-company -data WitnessAnchor :: witnessOrd WitnessOrd, witnessId XChainTxid --- urn:ubideco:semid:JAhqqYxn4oDEDefAeAHFcAtNQJqQBHo6q5xqbviV3L3q#jacket-fiction-sound -data WitnessOrd :: onChain WitnessPos + | attachment#255 [AssignRevealedAttachBlindSealTxid] + +@mnemonic(andy-mango-brother) +data Valencies : {ValencyType ^ ..0xff} + +@mnemonic(palma-exit-pupil) +data ValencyType : U16 + +@mnemonic(nectar-ceramic-driver) +data VoidState : () + +@mnemonic(henry-prepare-company) +data WitnessAnchor : witnessOrd WitnessOrd, witnessId XChainTxid + +@mnemonic(jacket-fiction-sound) +data WitnessOrd : onChain WitnessPos | offChain () --- urn:ubideco:semid:zaGYZruf2pxiZqk1bjmoivxK8DkFycoyjQB52uHYhGL#robert-average-artist -data WitnessPos :: height U32, timestamp I64 --- urn:ubideco:semid:7ypgzk2JFQpQQbtUFua1uyGu6N7aUxkiXokmjrJDNQnq#floor-emotion-riviera -data XChainAnchorSet :: bitcoin AnchorSet + +@mnemonic(robert-average-artist) +data WitnessPos : height U32, timestamp I64 + +@mnemonic(floor-emotion-riviera) +data XChainAnchorSet : bitcoin AnchorSet | liquid AnchorSet --- urn:ubideco:semid:Ag5MktqPQsAWFoJEaUfNw6AvjYtLFXMwupw9chdEwEKE#prime-loyal-escort -data XChainBlindSealTxPtr :: bitcoin BPCore.BlindSealTxPtr {- urn:ubideco:semid:5ircUcbD1UjEKsAKMcvdfjS9UcVCEcs47BWAZ5UDqYdr#austria-icon-waiter -} - | liquid BPCore.BlindSealTxPtr {- urn:ubideco:semid:5ircUcbD1UjEKsAKMcvdfjS9UcVCEcs47BWAZ5UDqYdr#austria-icon-waiter -} --- urn:ubideco:semid:9kefL6S8Tr5a7hMTPg6M8Ruh9Da7s3LV6L4HJDQH69vJ#biology-domain-domain -data XChainBlindSealTxid :: bitcoin BPCore.BlindSealTxid {- urn:ubideco:semid:Cu4G4njDjd2mgmz4FsvFAwRKwBpksmZ9CB9AJhSNx5dk#kimono-golf-price -} - | liquid BPCore.BlindSealTxid {- urn:ubideco:semid:Cu4G4njDjd2mgmz4FsvFAwRKwBpksmZ9CB9AJhSNx5dk#kimono-golf-price -} --- urn:ubideco:semid:F6RPJgZMGop2K5QBdWK1bP57ifXo5g76Jet1fEtbi3Wh#ozone-quick-hippie -data XChainExplicitSealTxid :: bitcoin BPCore.ExplicitSealTxid {- urn:ubideco:semid:FxnQvXfa6koZmm6uyZCPwnGrMi3UzY588kKN9ipN72L#antenna-darwin-emotion -} - | liquid BPCore.ExplicitSealTxid {- urn:ubideco:semid:FxnQvXfa6koZmm6uyZCPwnGrMi3UzY588kKN9ipN72L#antenna-darwin-emotion -} --- urn:ubideco:semid:FmzeQkRM31bz3UNNTZTV2DWDyCMVSabzQWcdb1PpL2Ao#palace-random-taxi -data XChainSecretSeal :: bitcoin BPCore.SecretSeal {- urn:ubideco:semid:81NKrdc9pBoBjsKaGBVN9wXLG4tKjkK4f8DLj7TNMZxh#santana-domingo-needle -} - | liquid BPCore.SecretSeal {- urn:ubideco:semid:81NKrdc9pBoBjsKaGBVN9wXLG4tKjkK4f8DLj7TNMZxh#santana-domingo-needle -} --- urn:ubideco:semid:AFRnr7FmAC7DtKDQZj9eCzuf9Tp8E6UckpVouwDmwq5S#cubic-museum-lemon -data XChainTxid :: bitcoin Bitcoin.Txid {- urn:ubideco:semid:C1GfCrG7AXu2sFhRBspd7KpJK2YgyTkVy6pty5rZynRs#cowboy-diego-betty -} - | liquid Bitcoin.Txid {- urn:ubideco:semid:C1GfCrG7AXu2sFhRBspd7KpJK2YgyTkVy6pty5rZynRs#cowboy-diego-betty -} + +@mnemonic(prime-loyal-escort) +data XChainBlindSealTxPtr : bitcoin BPCore.BlindSealTxPtr#austria-icon-waiter + | liquid BPCore.BlindSealTxPtr#austria-icon-waiter + +@mnemonic(biology-domain-domain) +data XChainBlindSealTxid : bitcoin BPCore.BlindSealTxid#kimono-golf-price + | liquid BPCore.BlindSealTxid#kimono-golf-price + +@mnemonic(ozone-quick-hippie) +data XChainExplicitSealTxid : bitcoin BPCore.ExplicitSealTxid#antenna-darwin-emotion + | liquid BPCore.ExplicitSealTxid#antenna-darwin-emotion + +@mnemonic(palace-random-taxi) +data XChainSecretSeal : bitcoin BPCore.SecretSeal#santana-domingo-needle + | liquid BPCore.SecretSeal#santana-domingo-needle + +@mnemonic(cubic-museum-lemon) +data XChainTxid : bitcoin Bitcoin.Txid#cowboy-diego-betty + | liquid Bitcoin.Txid#cowboy-diego-betty + diff --git a/stl/Schema.vesper b/stl/Schema.vesper new file mode 100644 index 00000000..c5824b93 --- /dev/null +++ b/stl/Schema.vesper @@ -0,0 +1,119 @@ +Schema rec + ffv is U16 aka=Ffv + some is Unit option wrapped tag=1 + globalTypes map len=0..MAX8 + key is U16 aka=GlobalStateType + GlobalStateSchema rec -- mapped to + semId bytes len=32 aka=SemId + maxItems is U16 + ownedTypes map len=0..MAX8 + key is U16 aka=AssignmentType + StateSchema union -- mapped to + declarative is Unit tag=0 + fungible enum wrapped unsigned64Bit=8 tag=1 -- FungibleType + structured bytes len=32 wrapped aka=SemId tag=2 + attachment enum wrapped any=255 tag=3 -- MediaType + valencyTypes set len=0..MAX8 + element is U16 aka=ValencyType + genesis rec -- GenesisSchema + metadata bytes len=32 aka=SemId + globals map len=0..MAX8 + key is U16 aka=GlobalStateType + Occurrences rec -- mapped to + min is U16 + max is U16 + assignments map len=0..MAX8 + key is U16 aka=AssignmentType + Occurrences rec -- mapped to + min is U16 + max is U16 + valencies set len=0..MAX8 + element is U16 aka=ValencyType + extensions map len=0..MAX8 + key is U16 aka=ExtensionType + ExtensionSchema rec -- mapped to + metadata bytes len=32 aka=SemId + globals map len=0..MAX8 + key is U16 aka=GlobalStateType + Occurrences rec -- mapped to + min is U16 + max is U16 + redeems set len=0..MAX8 + element is U16 aka=ValencyType + assignments map len=0..MAX8 + key is U16 aka=AssignmentType + Occurrences rec -- mapped to + min is U16 + max is U16 + valencies set len=0..MAX8 + element is U16 aka=ValencyType + transitions map len=0..MAX8 + key is U16 aka=TransitionType + TransitionSchema rec -- mapped to + metadata bytes len=32 aka=SemId + globals map len=0..MAX8 + key is U16 aka=GlobalStateType + Occurrences rec -- mapped to + min is U16 + max is U16 + inputs map len=0..MAX8 + key is U16 aka=AssignmentType + Occurrences rec -- mapped to + min is U16 + max is U16 + assignments map len=0..MAX8 + key is U16 aka=AssignmentType + Occurrences rec -- mapped to + min is U16 + 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 + script union -- Script + aluVm rec wrapped tag=0 -- AluScript + libs map len=0..MAX8 + key bytes len=32 aka=LibId + value bytes len=0..MAX16 + entryPoints map len=0..MAX16 + key bytes len=3 + LibSite rec -- mapped to + lib bytes len=32 aka=LibId + pos is U16 diff --git a/stl/Transition.vesper b/stl/Transition.vesper new file mode 100644 index 00000000..6b26324c --- /dev/null +++ b/stl/Transition.vesper @@ -0,0 +1,231 @@ +Transition rec + ffv is U16 aka=Ffv + contractId bytes len=32 aka=ContractId + transitionType is U16 aka=TransitionType + metadata bytes len=0..MAX16 + globals map len=0..MAX8 aka=GlobalState + key is U16 aka=GlobalStateType + value list len=1..MAX16 aka=GlobalValues + RevealedData rec + value bytes len=0..MAX16 aka=DataState + salt is U128 + inputs set len=0..MAX8 aka=Inputs + Input rec + prevOut rec -- Opout + op bytes len=32 aka=OpId + ty is U16 aka=AssignmentType + no is U16 + reserved is U8 aka=ReservedByte + assignments map len=0..MAX8 aka=AssignmentsBlindSealTxPtr + key is U16 aka=AssignmentType + TypedAssignsBlindSealTxPtr union -- mapped to + 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 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 union -- RangeProof + placeholder bytes len=512 wrapped aka=NoiseDumb tag=0 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 union -- RangeProof + placeholder bytes len=512 wrapped aka=NoiseDumb tag=0 + 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 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + confidentialState rec tag=1 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + 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 + id bytes len=32 aka=AttachId + mediaType enum any=255 -- MediaType + salt is U64 + revealed rec tag=3 + seal union -- XChainBlindSealTxPtr + bitcoin rec wrapped tag=0 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 wrapped tag=1 -- BlindSealTxPtr + method enum opretFirst=0 tapretFirst=1 -- Method + 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 + id bytes len=32 aka=AttachId + mediaType enum any=255 -- MediaType + salt is U64 + valencies set len=0..MAX8 aka=Valencies + element is U16 aka=ValencyType