diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e2a308d9..80efcaa9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,11 +1,11 @@ -name: Build Check +name: Build on: push: branches: - master - - develop - - 'v[0-9]+.[0-9]+' + tags: + - 'v[0-9]+\.*' pull_request: branches: - master @@ -20,62 +20,48 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - # NOTE: Dont use nix here, everything should be based on the ubuntu-latest - - name: Install rust stable - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Latest Ubuntu build check - uses: actions-rs/cargo@v1 - with: - command: check - args: --workspace + - uses: dtolnay/rust-toolchain@stable + - run: cargo check --workspace + no-default: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - run: cargo check --workspace --no-default-features features: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - feature: - - fs - - serde + feature: [ fs, serde ] steps: - uses: actions/checkout@v4 - - name: Install Nix - uses: cachix/install-nix-action@v26 - - name: Check feature ${{ matrix.feature }} only - run: nix develop .#stable -c cargo check --no-default-features --features=${{ matrix.feature }} - - name: Check feature ${{ matrix.feature }} with defaults - run: nix develop .#stable -c cargo check --features=${{ matrix.feature }} + - uses: dtolnay/rust-toolchain@stable + - name: Feature ${{matrix.feature}} + run: cargo check --workspace --no-default-features --features=${{matrix.feature}} + - name: Feature ${{matrix.feature}} + run: cargo check --workspace --features=${{matrix.feature}} platforms: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ ubuntu-20.04, ubuntu-22.04, macos-12, macos-13, windows-2019, windows-2022 ] + os: [ ubuntu-22.04, ubuntu-latest, macos-13, macos-latest, windows-2019, windows-latest ] steps: - uses: actions/checkout@v4 - # NOTE: Dont use nix in platform checks everything should based on the host system - - name: Install rust stable - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Build check with all features - uses: actions-rs/cargo@v1 - with: - command: check - args: --workspace --all-targets --all-features + - uses: dtolnay/rust-toolchain@stable + - name: Platform ${{matrix.os}} + run: cargo check --workspace --all-features # we skip test targets here to be sure that the main library can be built toolchains: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - toolchain: [ nightly, beta, stable, msrv ] + toolchain: [ nightly, beta, stable, 1.76.0 ] steps: - - name: checkout - uses: actions/checkout@v4 - - name: Install Nix - uses: cachix/install-nix-action@v26 - - name: Check Crates - run: nix develop ".#${{ matrix.toolchain }}" -c cargo check --workspace --all-targets --all-features + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{matrix.toolchain}} + - name: Toolchain ${{matrix.toolchain}} + run: cargo +${{matrix.toolchain}} check --workspace --all-targets --all-features diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 4a23e91b..3711d7ad 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -4,8 +4,8 @@ on: push: branches: - master - - develop - - 'v[0-9]+.[0-9]+' + tags: + - 'v[0-9]+\.*' pull_request: branches: - master @@ -19,23 +19,22 @@ jobs: codecov: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Install Nix - uses: cachix/install-nix-action@v26 - - name: Build - run: nix develop .#codecov -c cargo build --release - - name: Test - run: nix develop .#codecov -c cargo test --all-features --no-fail-fast --tests - - name: Install grcov - run: nix develop .#codecov -c cargo install grcov - - name: Generate coverage - run: nix develop .#codecov -c grcov . --binary-path target/debug/deps/ -s . -t lcov --branch --ignore-not-existing --ignore '../**' --ignore '/*' -o coverage.lcov - - name: Upload coverage to Codecov + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + with: + components: llvm-tools-preview + - uses: taiki-e/install-action@cargo-llvm-cov + - uses: taiki-e/install-action@nextest + - name: Collect coverage data (including doctests) + run: | + cargo +nightly llvm-cov --no-report nextest --workspace --all-features + cargo +nightly llvm-cov --no-report --doc --workspace --all-features + cargo +nightly llvm-cov report --doctests --lcov --output-path lcov.info + - name: Upload coverage data to codecov uses: codecov/codecov-action@v4 with: - files: ./coverage.lcov flags: rust - # TODO: set true when CODECOV_TOKEN is set - fail_ci_if_error: false - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + files: lcov.info + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + verbose: true diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7ca82979..ab5249d1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,11 +1,6 @@ name: Lints on: - push: - branches: - - master - - develop - - 'v[0-9]+.[0-9]+' pull_request: branches: - master @@ -20,23 +15,31 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install Nix - uses: cachix/install-nix-action@v26 + - uses: dtolnay/rust-toolchain@nightly + with: + components: rustfmt - name: Formatting - run: nix develop .#nightly -c cargo fmt --all -- --check + run: cargo +nightly fmt --all -- --check clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install Nix - uses: cachix/install-nix-action@v26 - - name: Clippy - run: nix develop .#stable -c cargo clippy --workspace --all-features --all-targets -- -D warnings + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + - name: Formatting + run: cargo clippy --workspace --all-features --all-targets -- -D warnings doc: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install Nix - uses: cachix/install-nix-action@v26 - - name: Doc - run: nix develop .#nightly -c cargo doc --workspace --all-features + - uses: dtolnay/rust-toolchain@nightly + with: + components: rust-docs + - name: Formatting + run: cargo +nightly doc --workspace --all-features + typos: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: crate-ci/typos@master diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1dae2740..9821d00e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,8 +4,8 @@ on: push: branches: - master - - develop - - 'v[0-9]+.[0-9]+' + tags: + - 'v[0-9]+\.*' pull_request: branches: - master @@ -17,18 +17,23 @@ env: jobs: testing: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, macos-13, macos-latest, windows-latest ] steps: - uses: actions/checkout@v4 - - name: Install Nix - uses: cachix/install-nix-action@v26 - - name: Build & test - run: nix develop .#stable -c cargo test --workspace --all-features --no-fail-fast --tests + - uses: dtolnay/rust-toolchain@stable + - name: Test ${{matrix.os}} + run: cargo test --workspace --all-features --no-fail-fast wasm-testing: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install Nix - uses: cachix/install-nix-action@v26 + - uses: dtolnay/rust-toolchain@nightly + - uses: jetli/wasm-pack-action@v0.4.0 + - name: Add wasm32 target + run: rustup target add wasm32-unknown-unknown - name: Test in headless Chrome - run: nix develop .#wasm -c wasm-pack test --headless --chrome + run: wasm-pack test --headless --chrome diff --git a/.rustfmt.toml b/.rustfmt.toml index de9c4d68..9017cd7d 100644 --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -4,10 +4,12 @@ version = "Two" max_width = 100 array_width = 100 attr_fn_like_width = 100 +comment_width = 100 fn_call_width = 100 +single_line_if_else_max_width = 100 -format_code_in_doc_comments = true fn_single_line = true +format_code_in_doc_comments = true format_macro_matchers = true format_macro_bodies = true format_strings = true @@ -19,9 +21,6 @@ use_try_shorthand = true wrap_comments = true where_single_line = true unstable_features = true -empty_item_single_line = true - -binop_separator = "Back" imports_granularity = "Module" group_imports = "StdExternalCrate" diff --git a/Cargo.lock b/Cargo.lock index a2f13f59..8eaef292 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "aluvm" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a05798f882593a692d1e05d2b650d8d19f6dd8b04a9a8d31f09fcf0d44d90a" +checksum = "1aaa9bf6c54f2d232adc6a9e748f359f1b4570d0a498f92e7823321ae7c656b5" dependencies = [ "amplify", "ascii-armor", @@ -25,9 +25,9 @@ dependencies = [ [[package]] name = "amplify" -version = "4.6.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e711289a6cb28171b4f0e6c8019c69ff9476050508dc082167575d458ff74d0" +checksum = "7147b742325842988dd6c793d55f58df3ae36bccf7d9b6e07db10ab035be343d" dependencies = [ "amplify_apfloat", "amplify_derive", @@ -42,9 +42,9 @@ dependencies = [ [[package]] name = "amplify_apfloat" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e23f5ede99065fa6957a633498d2728d51016d61dae23b69c866112b7c61ee" +checksum = "695e433882668b55b3d7fb0ba22bf9be66a91abe30d7ca1f1a774f8b90b4db4c" dependencies = [ "amplify_num", "bitflags 2.6.0", @@ -65,9 +65,9 @@ dependencies = [ [[package]] name = "amplify_num" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c009c5c4de814911b177e2ea59e4930bb918978ed3cce4900d846a6ceb0838" +checksum = "99bcb75a2982047f733547042fc3968c0f460dfcf7d90b90dea3b2744580e9ad" dependencies = [ "serde", "wasm-bindgen", @@ -107,9 +107,9 @@ checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ascii" @@ -172,28 +172,12 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" -[[package]] -name = "bitcoin-io" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56" - [[package]] name = "bitcoin-private" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" -[[package]] -name = "bitcoin_hashes" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" -dependencies = [ - "bitcoin-io", - "hex-conservative", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -230,13 +214,14 @@ dependencies = [ [[package]] name = "bp-consensus" -version = "0.11.0-beta.6" -source = "git+https://github.com/BP-WG/bp-core?branch=master#1989b57875a33243070b387158f5061e5df5be49" +version = "0.11.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23ea438647522d1f1a8fc8fa1420cc56321433d5d5964636294991f18f9e0c9" dependencies = [ "amplify", "chrono", "commit_verify", - "secp256k1 0.29.0", + "secp256k1", "serde", "strict_encoding", "strict_types", @@ -244,9 +229,9 @@ dependencies = [ [[package]] name = "bp-core" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea9b90b2e6cfafc0e45dc0a856e9b45e933ab4147c576ca8c26f038ba8c97bb" +checksum = "b43a6b5389fd99298fca47f4566dda754fa10bdb41200b5cdfc16147400f5951" dependencies = [ "amplify", "bp-consensus", @@ -263,35 +248,36 @@ dependencies = [ [[package]] name = "bp-dbc" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec406f105bf1e421ead00b47e309901028d10de7033fe918445b089cf7505669" +checksum = "f0f70bd407dfcbeadfbc012959e04decbe63e7dc6f30a4f705b804b699b37a0a" dependencies = [ "amplify", "base85", "bp-consensus", "commit_verify", - "secp256k1 0.29.0", + "secp256k1", "serde", "strict_encoding", ] [[package]] name = "bp-invoice" -version = "0.11.0-beta.6" -source = "git+https://github.com/BP-WG/bp-std.git?branch=master#b664d65aeec68b11b42fa55d6b82d0e66228a0be" +version = "0.11.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcb55fe081418fc6e508370eaf8431001274727862e57e6672b6c892b8d3d66" dependencies = [ "amplify", "bech32", - "bitcoin_hashes", "bp-consensus", + "commit_verify", ] [[package]] name = "bp-seals" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4f81b41d82e4138d4bcac17afbb421099c887e406947430131c14ba22abe45d" +checksum = "497bb5989b9b549cd8e4ebfabc50a5d57cf318ab56affd3d4d7b7749fcd780da" dependencies = [ "amplify", "baid64", @@ -318,9 +304,12 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.1.7" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -345,9 +334,9 @@ dependencies = [ [[package]] name = "commit_encoding_derive" -version = "0.11.0-beta.5" +version = "0.11.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d660fdac917fb67edd1707bc9481e51ed9062ab4ba1c4e56ed7856977fff9f3" +checksum = "ca41bd14a6c400486463a5b0e7e8916b1c7bad554a382f62c3b11bd58dea5934" dependencies = [ "amplify", "amplify_syn", @@ -358,9 +347,9 @@ dependencies = [ [[package]] name = "commit_verify" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b350bc4d1c5992571e3323810921d0eb4a65a3171cbf06fd1b9d1249cf1c3339" +checksum = "538b69bbb2f7259c1d07334fa8adae0006c8b559efbdb6daafacb6df249b897b" dependencies = [ "amplify", "commit_encoding_derive", @@ -391,15 +380,15 @@ checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -492,18 +481,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hex-conservative" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" -dependencies = [ - "arrayvec", -] +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "iana-time-zone" @@ -530,9 +510,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" dependencies = [ "equivalent", "hashbrown", @@ -546,18 +526,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "log" @@ -577,6 +557,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minicov" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71e683cd655513b99affab7d317deb690528255a0d5f717f1024093c12b169" +dependencies = [ + "cc", + "walkdir", +] + [[package]] name = "mnemonic" version = "1.1.1" @@ -612,9 +602,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "ppv-lite86" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee4364d9f3b902ef14fab8a1ddffb783a1cb6b4bba3bfc1fa3922732c7de97f" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ "zerocopy", ] @@ -669,8 +659,9 @@ dependencies = [ [[package]] name = "rgb-core" -version = "0.11.0-beta.6" -source = "git+https://github.com/RGB-WG/rgb-core?branch=master#f47d1a33e189d8b88c869e39527c525f90aafda5" +version = "0.11.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243f1dcdf028b1cbadc9ed27866619feed0608eba0c84f59b344026648312731" dependencies = [ "aluvm", "amplify", @@ -690,7 +681,7 @@ dependencies = [ [[package]] name = "rgb-invoice" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" dependencies = [ "amplify", "baid64", @@ -709,7 +700,7 @@ dependencies = [ [[package]] name = "rgb-std" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" dependencies = [ "aluvm", "amplify", @@ -733,7 +724,7 @@ dependencies = [ [[package]] name = "rgb-stl" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" dependencies = [ "amplify", "commit_verify", @@ -757,21 +748,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] -name = "scoped-tls" -version = "1.0.1" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] [[package]] -name = "secp256k1" -version = "0.28.2" +name = "scoped-tls" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" -dependencies = [ - "rand", - "secp256k1-sys 0.9.2", - "serde", -] +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "secp256k1" @@ -780,19 +769,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3" dependencies = [ "rand", - "secp256k1-sys 0.10.0", + "secp256k1-sys", "serde", ] -[[package]] -name = "secp256k1-sys" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" -dependencies = [ - "cc", -] - [[package]] name = "secp256k1-sys" version = "0.10.0" @@ -804,52 +784,52 @@ dependencies = [ [[package]] name = "secp256k1-zkp" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e48ef9c98bfbcb98bd15693ffa19676cb3e29426b75eda8b73c05cdd7959f8" +checksum = "52a44aed3002b5ae975f8624c5df3a949cfbf00479e18778b6058fcd213b76e3" dependencies = [ "bitcoin-private", "rand", - "secp256k1 0.28.2", + "secp256k1", "secp256k1-zkp-sys", "serde", ] [[package]] name = "secp256k1-zkp-sys" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ead52f43074bae2ddbd1e0e66e6b170135e76117f5ea9916f33d7bd0b36e29" +checksum = "8c6eea7919e0cab992510edfbf40bd9342c0a3c2bb910f2c51355c2cb2d69839" dependencies = [ "cc", - "secp256k1-sys 0.9.2", + "secp256k1-sys", ] [[package]] name = "serde" -version = "1.0.204" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "serde_json" -version = "1.0.122" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", "memchr", @@ -900,32 +880,39 @@ dependencies = [ "digest", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "single_use_seals" -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55367b3a0d642ee289fec6781fda0b527a35d45511a04bb4cd19fa315c441b77" +checksum = "66c34b7d0a73e5b821f2647331b1303463ce58c51b32f54b006f0e7bb3edcd8a" dependencies = [ "amplify_derive", ] [[package]] name = "strict_encoding" -version = "2.7.0-beta.4" +version = "2.7.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2854135bbecf01fac5bae609ec3408e130259670424e2cd755660556d239c92" +checksum = "662b8c3ff360ff33370e6875dd5bdcbf3cecc992241f30e5f7071227ef693451" dependencies = [ "amplify", "half", "serde", "strict_encoding_derive", + "wasm-bindgen", ] [[package]] name = "strict_encoding_derive" -version = "2.7.0-beta.3" +version = "2.7.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475fa6f1fdde6e0555422b5111ad34bde30a1459af3599f920c3af9829772c0e" +checksum = "0ad171ee0ac09497f5f87d90bb36acc21992fb58f3565ad8c2663160c07c306d" dependencies = [ "amplify_syn", "heck", @@ -936,9 +923,9 @@ dependencies = [ [[package]] name = "strict_types" -version = "2.7.0-beta.4" +version = "2.7.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a5479921604482fd8775ec07fbb9075c92e12649358d1f70dc9552783d0d1e" +checksum = "e6e182f593e9c4f02ccfcea7929bef866cff12a3f8e213338ce48a706bb263c1" dependencies = [ "amplify", "ascii-armor", @@ -952,6 +939,7 @@ dependencies = [ "strict_encoding", "toml", "vesper-lang", + "wasm-bindgen", ] [[package]] @@ -977,9 +965,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" dependencies = [ "proc-macro2", "quote", @@ -1003,7 +991,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] @@ -1074,6 +1062,16 @@ dependencies = [ "strict_encoding", ] +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1082,34 +1080,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -1119,9 +1118,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1129,31 +1128,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-bindgen-test" -version = "0.3.42" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b" +checksum = "68497a05fb21143a08a7d24fc81763384a3072ee43c44e86aad1744d6adef9d9" dependencies = [ "console_error_panic_hook", "js-sys", + "minicov", "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", @@ -1162,25 +1162,34 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.42" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" +checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", ] +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -1190,6 +1199,15 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -1265,9 +1283,9 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.6.6" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", "zerocopy-derive", @@ -1275,11 +1293,11 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.6.6" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.75", ] diff --git a/Cargo.toml b/Cargo.toml index 5065bcec..f9e86041 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ default-members = [ resolver = "2" [workspace.package] -version = "0.11.0-beta.6" +version = "0.11.0-beta.7" authors = ["Dr Maxim Orlovsky "] homepage = "https://github.com/RGB-WG" repository = "https://github.com/RGB-WG/rgb-std" @@ -22,16 +22,16 @@ edition = "2021" license = "Apache-2.0" [workspace.dependencies] -amplify = "4.6.0" +amplify = "4.7.0" ascii-armor = "0.7.1" baid64 = "0.2.2" -strict_encoding = "2.7.0-beta.4" -strict_types = "2.7.0-beta.4" -commit_verify = { version = "0.11.0-beta.6", features = ["stl"] } -bp-core = { version = "0.11.0-beta.6", features = ["stl"] } -bp-invoice = { version = "0.11.0-beta.6" } # TODO: Update -rgb-core = { version = "0.11.0-beta.6", features = ["stl"] } -indexmap = "2.0.2" +strict_encoding = "2.7.0-rc.1" +strict_types = "2.7.0-rc.1" +commit_verify = { version = "0.11.0-beta.7", features = ["stl"] } +bp-core = { version = "0.11.0-beta.7", features = ["stl"] } +bp-invoice = { version = "0.11.0-beta.7" } +rgb-core = { version = "0.11.0-beta.7", features = ["stl"] } +indexmap = "2.4.0" serde_crate = { package = "serde", version = "1", features = ["derive"] } [package] @@ -62,7 +62,7 @@ commit_verify = { workspace = true } bp-core = { workspace = true } rgb-core = { workspace = true } rgb-invoice = { version = "0.11.0-beta.6", path = "invoice" } -aluvm = "0.11.0-beta.6" +aluvm = "0.11.0-beta.7" base85 = "=2.0.0" chrono = "0.4.38" indexmap = { workspace = true } @@ -95,8 +95,3 @@ wasm-bindgen-test = "0.3" [package.metadata.docs.rs] features = ["all"] - -[patch.crates-io] -bp-consensus = { git = "https://github.com/BP-WG/bp-core", branch = "master" } -bp-invoice = { git = "https://github.com/BP-WG/bp-std.git", branch = "master" } -rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "master" } diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 84302738..00000000 --- a/Dockerfile +++ /dev/null @@ -1,66 +0,0 @@ -# This image uses cargo-chef to build the application in order to compile -# the dependencies apart from the main application. This allows the compiled -# dependencies to be cached in the Docker layer and greatly reduce the -# build time when there isn't any dependency changes. -# -# https://github.com/LukeMathWalker/cargo-chef - -ARG SRC_DIR=/usr/local/src/rgb-wallet -ARG BUILDER_DIR=/srv/rgb-wallet - -# Base image -FROM rust:1.59.0-slim-bullseye as chef - -ARG SRC_DIR -ARG BUILDER_DIR - -RUN rustup default stable -RUN rustup update -RUN cargo install cargo-chef --locked - -WORKDIR $SRC_DIR - -# Cargo chef step that analyzes the project to determine the minimum subset of -# files (Cargo.lock and Cargo.toml manifests) required to build it and cache -# dependencies -FROM chef AS planner - -COPY . . -RUN cargo chef prepare --recipe-path recipe.json - -FROM chef AS builder - -ARG SRC_DIR -ARG BUILDER_DIR - -COPY --from=planner "${SRC_DIR}/recipe.json" recipe.json - -# Build dependencies - this is the caching Docker layer -RUN cargo chef cook --release --recipe-path recipe.json --target-dir "${BUILDER_DIR}" - -# Copy all files and build application -COPY . . -RUN cargo build --release --target-dir "${BUILDER_DIR}" --bins --all-features - -# Final image with binaries -FROM debian:bullseye-slim as final - -ARG BUILDER_DIR -ARG DATA_DIR=/var/lib/rgb -ARG BIN_DIR=/usr/local/bin -ARG USER=rgb - -RUN adduser --home "${DATA_DIR}" --shell /bin/bash --disabled-login \ - --gecos "${USER} user" ${USER} - -COPY --from=builder --chown=${USER}:${USER} \ - "${BUILDER_DIR}/release" "${BIN_DIR}" - -WORKDIR "${BIN_DIR}" - -# Remove build artifacts in order to keep only the binaries -RUN rm -rf */ *.d .[^.] .??* - -USER ${USER} - -ENTRYPOINT ["rgb"] diff --git a/MANIFEST.yml b/MANIFEST.yml index 41a21b91..c5f31a0d 100644 --- a/MANIFEST.yml +++ b/MANIFEST.yml @@ -3,7 +3,7 @@ Type: Library Kind: Free software License: Apache-2.0 Language: Rust -Compiler: 1.75 +Compiler: 1.76 Author: Maxim Orlovsky Maintained: LNP/BP Standards Association, Switzerland Maintainers: diff --git a/README.md b/README.md index 7e26ed0b..579949a6 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,21 @@ # RGB wallet & standard libraries for smart contracts on Bitcoin & Lightning -![Build](https://github.com/RGB-WG/rgb-wallet/workflows/Build/badge.svg) -![Tests](https://github.com/RGB-WG/rgb-wallet/workflows/Tests/badge.svg) -![Lints](https://github.com/RGB-WG/rgb-wallet/workflows/Lints/badge.svg) -[![codecov](https://codecov.io/gh/RGB-WG/rgb-wallet/branch/master/graph/badge.svg)](https://codecov.io/gh/RGB-WG/rgb-wallet) +![Build](https://github.com/RGB-WG/rgb-std/workflows/Build/badge.svg) +![Tests](https://github.com/RGB-WG/rgb-std/workflows/Tests/badge.svg) +![Lints](https://github.com/RGB-WG/rgb-std/workflows/Lints/badge.svg) +[![codecov](https://codecov.io/gh/RGB-WG/rgb-std/branch/master/graph/badge.svg)](https://codecov.io/gh/RGB-WG/rgb-std) -[![crates.io](https://img.shields.io/crates/v/rgb-wallet)](https://crates.io/crates/rgb-wallet) -[![Docs](https://docs.rs/rgb-wallet/badge.svg)](https://docs.rs/rgb-wallet) +[![crates.io](https://img.shields.io/crates/v/rgb-std)](https://crates.io/crates/rgb-std) +[![Docs](https://docs.rs/rgb-std/badge.svg)](https://docs.rs/rgb-std) [![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/) -[![Apache-2 licensed](https://img.shields.io/crates/l/rgb-wallet)](./LICENSE) +[![Apache-2 licensed](https://img.shields.io/crates/l/rgb-std)](./LICENSE) RGB is confidential & scalable client-validated smart contracts for Bitcoin & Lightning. To learn more about RGB please check [RGB blueprint][Blueprint] and [RGB FAQ][FAQ] websites. -RGB wallet standard library provides non-consensus-critical high-level API for -RGB applications. It is based on [RGB Core Lib][Core], implementing validation +RGB wallet standard library provides non-consensus-critical high-level API for +RGB applications. It is based on [RGB Core Lib][Core], implementing validation and consensus rules for RGB smart contracts. The development of the project is supported and managed by [LNP/BP Standards @@ -28,6 +28,7 @@ and this library will accept only bugfixes; i.e. it will be ossified by requiring consensus ACK for the new changes across the large set of maintainers. The current list of the projects based on the library include: + * [RGB Node][RGB Node]: standalone & embeddable node for running RGB. * [MyCitadel Node][MyCitadel Node]: wallet node providing RGB smart contract functionality integrated with Lightning network, bitcoin blockchain indexers, @@ -40,15 +41,7 @@ The library can be integrated into other rust projects via `Cargo.toml` `[dependencies]` section: ```toml -rgb-wallet = "0.10.0" -``` - -If the library will be used for wallet applications and work with PSBT files, -than use `wallet` feature, which is non-default: - -```toml -[dependencies] -rgb-wallet = { version = "0.8", features = ["wallet"] } +rgb-std = "0.11.0" ``` For serialization purposes library provides `serde` feature, which is turned off @@ -70,13 +63,23 @@ See [LICENCE](LICENSE) file. [LNPBPs]: https://github.com/LNP-BP/LNPBPs + [Association]: https://lnp-bp.org + [Blueprint]: https://rgb.network + [FAQ]: https://rgbfaq.com + [Foundation]: https://github.com/LNP-BP/client_side_validation + [BP]: https://github.com/BP-WG/bp-core + [RGB Std]: https://github.com/RGB-WG/rgb-std + [RGB Node]: https://github.com/RGB-WG/rgb-node + [Max]: https://github.com/dr-orlovsky + [Todd]: https://petertodd.org/ + [Zucco]: https://giacomozucco.com/ diff --git a/_typos.toml b/_typos.toml new file mode 100644 index 00000000..0c6e78b7 --- /dev/null +++ b/_typos.toml @@ -0,0 +1,13 @@ +[files] +# exclude the directory "stl/" +extend-exclude = ["stl/"] + +[default.extend-words] +# Don't correct the name "Jon Atack". +Atack = "Atack" + +[default] +extend-ignore-re = [ + # Don't correct URIs + "([a-z]+:)*[$!0-9A-Za-z-]+", +] diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 6894ac04..00000000 --- a/flake.lock +++ /dev/null @@ -1,85 +0,0 @@ -{ - "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1712439257, - "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs", - "rust-overlay": "rust-overlay" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "flake-utils" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1712542394, - "narHash": "sha256-UZebDBECRSrJqw4K+LxZ6qFdYnScu6q1XCwqtsu1cas=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "ece8bdb3c3b58def25f204b9a1261dee55d7c9c0", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 97a9cc3d..00000000 --- a/flake.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.flake-utils.follows = "flake-utils"; - }; - flake-utils.url = "github:numtide/flake-utils"; - }; - - outputs = { self, rust-overlay, nixpkgs, flake-utils }: - flake-utils.lib.eachDefaultSystem (system: - let - overlays = [ (import rust-overlay) ]; - pkgs = import nixpkgs { - inherit system overlays; - }; - - cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); - - nightlyWithWasm = pkgs.rust-bin.nightly.latest.default.override { - extensions = [ ]; - targets = [ "wasm32-unknown-unknown" ]; - }; - - stableWithLlvm = pkgs.rust-bin.nightly.latest.default.override { - extensions = [ "rustfmt" "llvm-tools-preview" ]; - targets = [ ]; - }; - in - with pkgs; - { - devShells = rec { - default = msrv; - - msrv = mkShell { - buildInputs = [ - rust-bin.stable."${cargoToml.workspace.package."rust-version"}".default - ]; - }; - - stable = mkShell { - buildInputs = [ - rust-bin.stable.latest.default - ]; - }; - - beta = mkShell { - buildInputs = [ - rust-bin.beta.latest.default - ]; - }; - - nightly = mkShell { - buildInputs = [ - rust-bin.nightly.latest.default - ]; - }; - - wasm = mkShell { - buildInputs = [ - nightlyWithWasm - chromedriver - wasm-pack - ]; - }; - - codecov = mkShell { - buildInputs = [ - stableWithLlvm - ]; - CARGO_INCREMENTAL = "0"; - RUSTFLAGS = "-Cinstrument-coverage"; - RUSTDOCFLAGS = "-Cinstrument-coverage"; - }; - }; - } - ); -} diff --git a/invoice/src/invoice.rs b/invoice/src/invoice.rs index 22cdbf3d..853bd702 100644 --- a/invoice/src/invoice.rs +++ b/invoice/src/invoice.rs @@ -98,10 +98,10 @@ pub enum ChainNet { impl ChainNet { pub fn layer1(&self) -> Layer1 { match self { - ChainNet::BitcoinMainnet | - ChainNet::BitcoinTestnet | - ChainNet::BitcoinSignet | - ChainNet::BitcoinRegtest => Layer1::Bitcoin, + ChainNet::BitcoinMainnet + | ChainNet::BitcoinTestnet + | ChainNet::BitcoinSignet + | ChainNet::BitcoinRegtest => Layer1::Bitcoin, ChainNet::LiquidMainnet | ChainNet::LiquidTestnet => Layer1::Liquid, } } @@ -110,10 +110,10 @@ impl ChainNet { match self { ChainNet::BitcoinMainnet | ChainNet::LiquidMainnet => true, - ChainNet::BitcoinTestnet | - ChainNet::BitcoinSignet | - ChainNet::BitcoinRegtest | - ChainNet::LiquidTestnet => false, + ChainNet::BitcoinTestnet + | ChainNet::BitcoinSignet + | ChainNet::BitcoinRegtest + | ChainNet::LiquidTestnet => false, } } @@ -174,12 +174,12 @@ impl XChainNet { pub fn into_inner(self) -> T { match self { - XChainNet::BitcoinMainnet(inner) | - XChainNet::BitcoinTestnet(inner) | - XChainNet::BitcoinSignet(inner) | - XChainNet::BitcoinRegtest(inner) | - XChainNet::LiquidMainnet(inner) | - XChainNet::LiquidTestnet(inner) => inner, + XChainNet::BitcoinMainnet(inner) + | XChainNet::BitcoinTestnet(inner) + | XChainNet::BitcoinSignet(inner) + | XChainNet::BitcoinRegtest(inner) + | XChainNet::LiquidMainnet(inner) + | XChainNet::LiquidTestnet(inner) => inner, } } diff --git a/invoice/src/parse.rs b/invoice/src/parse.rs index 8f89ffaa..08e4a37e 100644 --- a/invoice/src/parse.rs +++ b/invoice/src/parse.rs @@ -136,9 +136,9 @@ pub enum InvoiceParseError { impl RgbInvoice { fn has_params(&self) -> bool { - self.expiry.is_some() || - self.transports != vec![RgbTransport::UnspecifiedMeans] || - !self.unknown_query.is_empty() + self.expiry.is_some() + || self.transports != vec![RgbTransport::UnspecifiedMeans] + || !self.unknown_query.is_empty() } fn query_params(&self) -> IndexMap { diff --git a/src/containers/anchors.rs b/src/containers/anchors.rs index 3a0f3c2f..d30e6116 100644 --- a/src/containers/anchors.rs +++ b/src/containers/anchors.rs @@ -78,8 +78,8 @@ impl MergeReveal for XPubWitness { one.merge_reveal(two).map(XChain::Bitcoin) } (XChain::Liquid(one), XChain::Liquid(two)) => one.merge_reveal(two).map(XChain::Liquid), - (XChain::Bitcoin(bitcoin), XChain::Liquid(liquid)) | - (XChain::Liquid(liquid), XChain::Bitcoin(bitcoin)) => { + (XChain::Bitcoin(bitcoin), XChain::Liquid(liquid)) + | (XChain::Liquid(liquid), XChain::Bitcoin(bitcoin)) => { Err(MergeRevealError::ChainMismatch { bitcoin: bitcoin.txid(), liquid: liquid.txid(), @@ -264,11 +264,11 @@ impl StrictDumb for AnchorSet { impl AnchorSet { pub fn known_bundle_ids(&self) -> impl Iterator { let map = match self { - AnchorSet::Tapret(tapret) => tapret.mpc_proof.to_known_message_map().into_inner(), - AnchorSet::Opret(opret) => opret.mpc_proof.to_known_message_map().into_inner(), + AnchorSet::Tapret(tapret) => tapret.mpc_proof.to_known_message_map().release(), + AnchorSet::Opret(opret) => opret.mpc_proof.to_known_message_map().release(), AnchorSet::Double { tapret, opret } => { - let mut map = tapret.mpc_proof.to_known_message_map().into_inner(); - map.extend(opret.mpc_proof.to_known_message_map().into_inner()); + let mut map = tapret.mpc_proof.to_known_message_map().release(); + map.extend(opret.mpc_proof.to_known_message_map().release()); map } }; @@ -284,17 +284,17 @@ impl AnchorSet { match (self, other) { (Self::Tapret(anchor), Self::Tapret(a)) => Ok(Self::Tapret(anchor.merge_reveal(a)?)), (Self::Opret(anchor), Self::Opret(a)) => Ok(Self::Opret(anchor.merge_reveal(a)?)), - (Self::Tapret(tapret), Self::Opret(opret)) | - (Self::Opret(opret), Self::Tapret(tapret)) => Ok(Self::Double { tapret, opret }), + (Self::Tapret(tapret), Self::Opret(opret)) + | (Self::Opret(opret), Self::Tapret(tapret)) => Ok(Self::Double { tapret, opret }), - (Self::Double { tapret, opret }, Self::Tapret(t)) | - (Self::Tapret(t), Self::Double { tapret, opret }) => Ok(Self::Double { + (Self::Double { tapret, opret }, Self::Tapret(t)) + | (Self::Tapret(t), Self::Double { tapret, opret }) => Ok(Self::Double { tapret: tapret.merge_reveal(t)?, opret, }), - (Self::Double { tapret, opret }, Self::Opret(o)) | - (Self::Opret(o), Self::Double { tapret, opret }) => Ok(Self::Double { + (Self::Double { tapret, opret }, Self::Opret(o)) + | (Self::Opret(o), Self::Double { tapret, opret }) => Ok(Self::Double { tapret, opret: opret.merge_reveal(o)?, }), @@ -466,8 +466,8 @@ impl AnchoredBundles { ( AnchoredBundles::Tapret(tapret_anchor, tapret_bundle), AnchoredBundles::Opret(opret_anchor, opret_bundle), - ) | - ( + ) + | ( AnchoredBundles::Opret(opret_anchor, opret_bundle), AnchoredBundles::Tapret(tapret_anchor, tapret_bundle), ) => Ok(AnchoredBundles::Double { @@ -485,8 +485,8 @@ impl AnchoredBundles { opret_bundle, }, AnchoredBundles::Tapret(t, bundle), - ) | - ( + ) + | ( AnchoredBundles::Tapret(t, bundle), AnchoredBundles::Double { tapret_anchor, @@ -509,8 +509,8 @@ impl AnchoredBundles { opret_bundle, }, AnchoredBundles::Opret(o, bundle), - ) | - ( + ) + | ( AnchoredBundles::Opret(o, bundle), AnchoredBundles::Double { tapret_anchor, diff --git a/src/containers/consignment.rs b/src/containers/consignment.rs index cf23f13d..84883d34 100644 --- a/src/containers/consignment.rs +++ b/src/containers/consignment.rs @@ -236,25 +236,25 @@ impl CommitEncode for Consignment { e.commit_to_serialized(&self.contract_id()); e.commit_to_serialized(&self.genesis.disclose_hash()); - e.commit_to_set(&TinyOrdSet::from_iter_unsafe( + e.commit_to_set(&TinyOrdSet::from_iter_checked( self.ifaces.values().map(|iimpl| iimpl.impl_id()), )); - e.commit_to_set(&LargeOrdSet::from_iter_unsafe( + e.commit_to_set(&LargeOrdSet::from_iter_checked( self.bundles.iter().map(BundledWitness::disclose_hash), )); - e.commit_to_set(&LargeOrdSet::from_iter_unsafe( + e.commit_to_set(&LargeOrdSet::from_iter_checked( self.extensions.iter().map(Extension::disclose_hash), )); e.commit_to_map(&self.terminals); - e.commit_to_set(&SmallOrdSet::from_iter_unsafe(self.attachments.keys().copied())); - e.commit_to_set(&TinyOrdSet::from_iter_unsafe( + e.commit_to_set(&SmallOrdSet::from_iter_checked(self.attachments.keys().copied())); + e.commit_to_set(&TinyOrdSet::from_iter_checked( self.supplements.iter().map(|suppl| suppl.suppl_id()), )); e.commit_to_serialized(&self.types.id()); - e.commit_to_set(&SmallOrdSet::from_iter_unsafe(self.scripts.iter().map(|lib| lib.id()))); + e.commit_to_set(&SmallOrdSet::from_iter_checked(self.scripts.iter().map(|lib| lib.id()))); e.commit_to_map(&self.signatures); } @@ -398,11 +398,7 @@ impl StrictArmor for Consignment { ArmorHeader::new(ASCII_ARMOR_VERSION, format!("{:#}", self.version)), ArmorHeader::new( ASCII_ARMOR_CONSIGNMENT_TYPE, - if self.transfer { - s!("transfer") - } else { - s!("contract") - }, + if self.transfer { s!("transfer") } else { s!("contract") }, ), ArmorHeader::new(ASCII_ARMOR_CONTRACT, self.contract_id().to_string()), ArmorHeader::new(ASCII_ARMOR_SCHEMA, self.schema.schema_id().to_string()), @@ -470,7 +466,7 @@ mod test { .expect("contract from str should work"); assert_eq!( contract.to_string(), - include_str!("../../asset/armored_contract.default"), + include_str!("../../asset/armored_contract.default").replace('\r', ""), "contract string round trip fails" ); contract.transfer = true; @@ -528,7 +524,7 @@ Check-SHA256: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .expect("transfer from str should work"); assert_eq!( transfer.to_string(), - include_str!("../../asset/armored_transfer.default"), + include_str!("../../asset/armored_transfer.default").replace('\r', ""), "transfer string round trip fails" ); } diff --git a/src/containers/file.rs b/src/containers/file.rs index 220299c9..4cd722c0 100644 --- a/src/containers/file.rs +++ b/src/containers/file.rs @@ -404,6 +404,7 @@ mod test { } } + #[cfg(feature = "fs")] #[test] fn transfer_save_load_round_trip() { let transfer = diff --git a/src/containers/indexed.rs b/src/containers/indexed.rs index 73129b35..59dc6f84 100644 --- a/src/containers/indexed.rs +++ b/src/containers/indexed.rs @@ -74,7 +74,7 @@ impl<'c, const TRANSFER: bool> IndexedConsignment<'c, TRANSFER> { for extension in &consignment.extensions { extension_idx.insert(extension.id(), extension); } - let scripts = Scripts::from_iter_unsafe( + let scripts = Scripts::from_iter_checked( consignment .scripts .iter() diff --git a/src/containers/kit.rs b/src/containers/kit.rs index e85a122e..c764aa83 100644 --- a/src/containers/kit.rs +++ b/src/containers/kit.rs @@ -151,21 +151,21 @@ impl CommitEncode for Kit { fn commit_encode(&self, e: &mut CommitEngine) { e.commit_to_serialized(&self.version); - e.commit_to_set(&TinyOrdSet::from_iter_unsafe( + e.commit_to_set(&TinyOrdSet::from_iter_checked( self.ifaces.iter().map(|iface| iface.iface_id()), )); - e.commit_to_set(&TinyOrdSet::from_iter_unsafe( + e.commit_to_set(&TinyOrdSet::from_iter_checked( self.schemata.iter().map(|schema| schema.schema_id()), )); - e.commit_to_set(&TinyOrdSet::from_iter_unsafe( + e.commit_to_set(&TinyOrdSet::from_iter_checked( self.iimpls.iter().map(|iimpl| iimpl.impl_id()), )); - e.commit_to_set(&TinyOrdSet::from_iter_unsafe( + e.commit_to_set(&TinyOrdSet::from_iter_checked( self.supplements.iter().map(|suppl| suppl.suppl_id()), )); e.commit_to_serialized(&self.types.id()); - e.commit_to_set(&SmallOrdSet::from_iter_unsafe(self.scripts.iter().map(|lib| lib.id()))); + e.commit_to_set(&SmallOrdSet::from_iter_checked(self.scripts.iter().map(|lib| lib.id()))); e.commit_to_map(&self.signatures); } @@ -277,15 +277,12 @@ mod test { let kit = Kit::from_str(include_str!("../../asset/armored_kit.default")) .expect("kit from str should work"); - assert_eq!( - kit.to_string(), - include_str!("../../asset/armored_kit.default"), - "kit string round trip fails" - ); + let hardcoded = include_str!("../../asset/armored_kit.default").replace('\r', ""); + assert_eq!(kit.to_string(), hardcoded, "kit string round trip fails"); assert_eq!( kit.validate().unwrap().to_string(), - include_str!("../../asset/armored_kit.default"), + hardcoded, "validated kit string round trip fails" ); } diff --git a/src/containers/mod.rs b/src/containers/mod.rs index 22be2701..aff6c7d7 100644 --- a/src/containers/mod.rs +++ b/src/containers/mod.rs @@ -21,12 +21,11 @@ //! RGB containers are data packages which can be transferred between smart //! contract users. There are two main types of containers: -//! 1. [`Consignment`]s, containing information about partial state of a *single -//! contract*, extending from its genesis up to certain contract endpoints. -//! 2. [`Disclosure`]s, containing extracts from (possibly) independent state -//! transitions and extensions under multiple contracts. Useful fro -//! disclosing the concealed state for some other parties, and also for -//! performing "change" operations on inventory during state transfers. +//! 1. [`Consignment`]s, containing information about partial state of a *single contract*, +//! extending from its genesis up to certain contract endpoints. +//! 2. [`Disclosure`]s, containing extracts from (possibly) independent state transitions and +//! extensions under multiple contracts. Useful fro disclosing the concealed state for some other +//! parties, and also for performing "change" operations on inventory during state transfers. mod seal; mod anchors; diff --git a/src/containers/partials.rs b/src/containers/partials.rs index 7fc32b79..d4610a2d 100644 --- a/src/containers/partials.rs +++ b/src/containers/partials.rs @@ -20,12 +20,12 @@ // limitations under the License. use std::cmp::Ordering; -use std::collections::{BTreeMap, BTreeSet}; +use std::collections::BTreeSet; use std::hash::{Hash, Hasher}; use std::ops::{BitOr, BitOrAssign}; use std::{iter, vec}; -use amplify::confinement::{Confined, U24}; +use amplify::confinement::{Confined, NonEmptyOrdMap, U24}; use bp::seals::txout::CloseMethod; use rgb::{ ContractId, OpId, Operation, Transition, TransitionBundle, TxoSeal, XOutpoint, XOutputSeal, @@ -210,7 +210,7 @@ impl IntoIterator for Batch { >; fn into_iter(self) -> Self::IntoIter { - let mut vec = self.blanks.into_inner(); + let mut vec = self.blanks.release(); vec.push(self.main); vec.into_iter().flat_map(TransitionDichotomy::into_iter) } @@ -311,7 +311,7 @@ impl Dichotomy { pub struct Fascia { pub witness: XPubWitness, pub anchor: AnchorSet, - pub bundles: Confined, 1, U24>, + pub bundles: NonEmptyOrdMap, } impl StrictDumb for Fascia { @@ -319,7 +319,7 @@ impl StrictDumb for Fascia { Fascia { witness: strict_dumb!(), anchor: strict_dumb!(), - bundles: confined_bmap![strict_dumb!() => strict_dumb!()], + bundles: NonEmptyOrdMap::with_key_value(strict_dumb!(), strict_dumb!()), } } } diff --git a/src/containers/util.rs b/src/containers/util.rs index 0e73a450..92b68043 100644 --- a/src/containers/util.rs +++ b/src/containers/util.rs @@ -19,9 +19,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::collections::{btree_map, BTreeMap}; +use std::collections::btree_map; -use amplify::confinement::{Confined, NonEmptyBlob}; +use amplify::confinement::{NonEmptyBlob, NonEmptyOrdMap}; use commit_verify::StrictHash; use rgb::{ContractId, Identity, SchemaId}; use strict_encoding::StrictDumb; @@ -121,11 +121,11 @@ impl Default for SigBlob { #[derive(StrictType, StrictEncode, StrictDecode)] #[strict_type(lib = LIB_NAME_RGB_STD)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "serde_crate"))] -pub struct ContentSigs(Confined, 1, 10>); +pub struct ContentSigs(NonEmptyOrdMap); impl StrictDumb for ContentSigs { fn strict_dumb() -> Self { - confined_bmap! { strict_dumb!() => SigBlob::default() } + Self(NonEmptyOrdMap::with_key_value(strict_dumb!(), SigBlob::default())) } } diff --git a/src/contract/merge_reveal.rs b/src/contract/merge_reveal.rs index df4ecac1..b662f5a5 100644 --- a/src/contract/merge_reveal.rs +++ b/src/contract/merge_reveal.rs @@ -218,14 +218,14 @@ impl MergeReveal for TransitionBundle { fn merge_reveal(mut self, other: Self) -> Result { debug_assert_eq!(self.bundle_id(), other.bundle_id()); - let mut self_transitions = self.known_transitions.into_inner(); + let mut self_transitions = self.known_transitions.release(); for (opid, other_transition) in other.known_transitions { if let Some(mut transition) = self_transitions.remove(&opid) { transition = transition.merge_reveal(other_transition)?; self_transitions.insert(opid, transition); } } - self.known_transitions = Confined::from_collection_unsafe(self_transitions); + self.known_transitions = Confined::from_checked(self_transitions); if self.input_map.len() < self.known_transitions.len() { return Err(MergeRevealError::InsufficientInputs); diff --git a/src/interface/builder.rs b/src/interface/builder.rs index dc96e7ce..c636ccfc 100644 --- a/src/interface/builder.rs +++ b/src/interface/builder.rs @@ -402,7 +402,7 @@ impl ContractBuilder { }; let ifaces = tiny_bmap! { iface => iimpl }; - let scripts = Confined::from_iter_unsafe(self.scripts.into_values()); + let scripts = Confined::from_iter_checked(self.scripts.into_values()); let contract = Contract { version: ContainerVer::V2, @@ -763,8 +763,8 @@ impl TransitionBuilder { allocation: impl Into, blinding: u64, ) -> Result { - let revelead_state = RevealedData::with_salt(allocation.into(), blinding.into()); - self.builder = self.builder.add_data_raw(type_id, seal, revelead_state)?; + let revealed_state = RevealedData::with_salt(allocation.into(), blinding.into()); + self.builder = self.builder.add_data_raw(type_id, seal, revealed_state)?; Ok(self) } @@ -809,7 +809,7 @@ impl TransitionBuilder { transition_type: self.transition_type, metadata: empty!(), globals: global, - inputs: SmallOrdSet::from_iter_unsafe(self.inputs.into_keys()).into(), + inputs: SmallOrdSet::from_iter_checked(self.inputs.into_keys()).into(), assignments, valencies: none!(), witness: none!(), diff --git a/src/interface/contract.rs b/src/interface/contract.rs index 62b014b1..b54e45d2 100644 --- a/src/interface/contract.rs +++ b/src/interface/contract.rs @@ -168,7 +168,7 @@ impl IfaceOp { fn from_spent(alloc: OutputAssignment) -> Self { Self { opids: none!(), - inputs: confined_bset![alloc.opout.op], + inputs: small_bset![alloc.opout.op], state_change: C::from_spent(alloc.state), payers: none!(), // TODO: Do something with beneficiary info @@ -177,7 +177,7 @@ impl IfaceOp { } fn from_received(alloc: OutputAssignment) -> Self { Self { - opids: confined_bset![alloc.opout.op], + opids: small_bset![alloc.opout.op], inputs: none!(), state_change: C::from_received(alloc.state), // TODO: Do something with payer info diff --git a/src/interface/iface.rs b/src/interface/iface.rs index fc31181a..c6cbfaaf 100644 --- a/src/interface/iface.rs +++ b/src/interface/iface.rs @@ -246,11 +246,7 @@ pub enum OwnedIface { impl OwnedIface { pub fn sem_id(&self) -> Option { - if let Self::Data(id) = self { - Some(*id) - } else { - None - } + if let Self::Data(id) = self { Some(*id) } else { None } } } @@ -604,11 +600,7 @@ impl Iface { } } - if errors.is_empty() { - Ok(()) - } else { - Err(errors) - } + if errors.is_empty() { Ok(()) } else { Err(errors) } } // TODO: Implement checking interface inheritance. diff --git a/src/interface/iimpl.rs b/src/interface/iimpl.rs index 1e528ed1..bad1a1c6 100644 --- a/src/interface/iimpl.rs +++ b/src/interface/iimpl.rs @@ -554,10 +554,6 @@ impl IfaceImpl { } } - if errors.is_empty() { - Ok(()) - } else { - Err(errors) - } + if errors.is_empty() { Ok(()) } else { Err(errors) } } } diff --git a/src/interface/inheritance.rs b/src/interface/inheritance.rs index af17ec52..8a1f945b 100644 --- a/src/interface/inheritance.rs +++ b/src/interface/inheritance.rs @@ -137,11 +137,7 @@ impl CheckInheritance for Schema { } } - if status.is_empty() { - Ok(()) - } else { - Err(status) - } + if status.is_empty() { Ok(()) } else { Err(status) } } } @@ -212,11 +208,7 @@ where T: OpSchema } } - if status.is_empty() { - Ok(()) - } else { - Err(status) - } + if status.is_empty() { Ok(()) } else { Err(status) } } } @@ -287,7 +279,7 @@ impl OwnedIface { impl Modifier { pub fn is_final(self) -> bool { self == Self::Final } - pub fn can_be_overriden_by(self, other: Modifier) -> bool { + pub fn can_be_overridden_by(self, other: Modifier) -> bool { matches!((self, other), (Self::Abstract | Self::Override, Self::Override | Self::Final)) } } @@ -511,11 +503,7 @@ impl Iface { .map_err(|_| errors.push(ExtensionError::InheritanceOverflow)) .ok(); - if errors.is_empty() { - Ok(self) - } else { - Err(errors) - } + if errors.is_empty() { Ok(self) } else { Err(errors) } } } @@ -573,7 +561,7 @@ impl GenesisIface { let op = OpName::Genesis; if self.modifier.is_final() { errors.push(ExtensionError::OpFinal(op.clone())); - } else if !self.modifier.can_be_overriden_by(ext.modifier) { + } else if !self.modifier.can_be_overridden_by(ext.modifier) { errors.push(ExtensionError::OpNoOverride(op.clone())); } @@ -587,11 +575,7 @@ impl GenesisIface { check_presence(&mut self.valencies, ext.valencies, op.clone(), "valency", &mut errors); check_presence(&mut self.errors, ext.errors, op.clone(), "error", &mut errors); - if errors.is_empty() { - Ok(self) - } else { - Err(errors) - } + if errors.is_empty() { Ok(self) } else { Err(errors) } } } @@ -602,7 +586,7 @@ impl TransitionIface { let op = OpName::Transition(op_name); if self.modifier.is_final() { errors.push(ExtensionError::OpFinal(op.clone())); - } else if !self.modifier.can_be_overriden_by(ext.modifier) { + } else if !self.modifier.can_be_overridden_by(ext.modifier) { errors.push(ExtensionError::OpNoOverride(op.clone())); } self.optional = self.optional.max(ext.optional); @@ -619,8 +603,8 @@ impl TransitionIface { check_presence(&mut self.errors, ext.errors, op.clone(), "error", &mut errors); if ext.default_assignment.is_some() { - if self.default_assignment.is_some() && - self.default_assignment != ext.default_assignment + if self.default_assignment.is_some() + && self.default_assignment != ext.default_assignment { errors.push(ExtensionError::OpDefaultOverride(op.clone())); } else { @@ -628,11 +612,7 @@ impl TransitionIface { } } - if errors.is_empty() { - Ok(self) - } else { - Err(errors) - } + if errors.is_empty() { Ok(self) } else { Err(errors) } } } @@ -643,7 +623,7 @@ impl ExtensionIface { let op = OpName::Transition(op_name); if self.modifier.is_final() { errors.push(ExtensionError::OpFinal(op.clone())); - } else if !self.modifier.can_be_overriden_by(ext.modifier) { + } else if !self.modifier.can_be_overridden_by(ext.modifier) { errors.push(ExtensionError::OpNoOverride(op.clone())); } self.optional = self.optional.max(ext.optional); @@ -660,8 +640,8 @@ impl ExtensionIface { check_presence(&mut self.errors, ext.errors, op.clone(), "error", &mut errors); if ext.default_assignment.is_some() { - if self.default_assignment.is_some() && - self.default_assignment != ext.default_assignment + if self.default_assignment.is_some() + && self.default_assignment != ext.default_assignment { errors.push(ExtensionError::OpDefaultOverride(op.clone())); } else { @@ -669,11 +649,7 @@ impl ExtensionIface { } } - if errors.is_empty() { - Ok(self) - } else { - Err(errors) - } + if errors.is_empty() { Ok(self) } else { Err(errors) } } } @@ -685,7 +661,7 @@ impl IfaceImpl { return None; } - self.metadata = Confined::from_iter_unsafe(base.metadata.keys().filter_map(|name| { + self.metadata = Confined::from_iter_checked(base.metadata.keys().filter_map(|name| { self.metadata .iter() .find(|i| parent.metadata.contains_key(name) && &i.name == name) @@ -693,35 +669,37 @@ impl IfaceImpl { })); self.global_state = - Confined::from_iter_unsafe(base.global_state.keys().filter_map(|name| { + Confined::from_iter_checked(base.global_state.keys().filter_map(|name| { self.global_state .iter() .find(|i| parent.global_state.contains_key(name) && &i.name == name) .cloned() })); - self.assignments = Confined::from_iter_unsafe(base.assignments.keys().filter_map(|name| { - self.assignments - .iter() - .find(|i| parent.assignments.contains_key(name) && &i.name == name) - .cloned() - })); + self.assignments = + Confined::from_iter_checked(base.assignments.keys().filter_map(|name| { + self.assignments + .iter() + .find(|i| parent.assignments.contains_key(name) && &i.name == name) + .cloned() + })); - self.valencies = Confined::from_iter_unsafe(base.assignments.keys().filter_map(|name| { + self.valencies = Confined::from_iter_checked(base.assignments.keys().filter_map(|name| { self.valencies .iter() .find(|i| parent.valencies.contains_key(name) && &i.name == name) .cloned() })); - self.transitions = Confined::from_iter_unsafe(base.transitions.keys().filter_map(|name| { - self.transitions - .iter() - .find(|i| parent.transitions.contains_key(name) && &i.name == name) - .cloned() - })); + self.transitions = + Confined::from_iter_checked(base.transitions.keys().filter_map(|name| { + self.transitions + .iter() + .find(|i| parent.transitions.contains_key(name) && &i.name == name) + .cloned() + })); - self.extensions = Confined::from_iter_unsafe(base.extensions.keys().filter_map(|name| { + self.extensions = Confined::from_iter_checked(base.extensions.keys().filter_map(|name| { self.extensions .iter() .find(|i| parent.extensions.contains_key(name) && &i.name == name) diff --git a/src/persistence/memory.rs b/src/persistence/memory.rs index 6c3fee51..0f06a8ed 100644 --- a/src/persistence/memory.rs +++ b/src/persistence/memory.rs @@ -301,8 +301,8 @@ impl StashReadProvider for MemStash { .witnesses .iter() .filter_map(|(witness_id, witness)| match &witness.anchors { - AnchorSet::Tapret(anchor) | - AnchorSet::Double { + AnchorSet::Tapret(anchor) + | AnchorSet::Double { tapret: anchor, opret: _, } => Some((*witness_id, TapretCommitment { @@ -374,7 +374,7 @@ impl StashWriteProvider for MemStash { fn add_supplement(&mut self, suppl: Supplement) -> Result<(), Self::Error> { match self.suppl.get_mut(&suppl.content_id) { None => { - self.suppl.insert(suppl.content_id, confined_bset![suppl])?; + self.suppl.insert(suppl.content_id, tiny_bset![suppl])?; } Some(suppls) => suppls.push(suppl)?, } @@ -529,11 +529,11 @@ impl StateReadProvider for MemState { .global .values() .flat_map(|state| state.known.keys()) - .any(|out| out.witness_id() == id) || - unfiltered.rights.iter().any(|a| a.witness == id) || - unfiltered.fungibles.iter().any(|a| a.witness == id) || - unfiltered.data.iter().any(|a| a.witness == id) || - unfiltered.attach.iter().any(|a| a.witness == id) + .any(|out| out.witness_id() == id) + || unfiltered.rights.iter().any(|a| a.witness == id) + || unfiltered.fungibles.iter().any(|a| a.witness == id) + || unfiltered.data.iter().any(|a| a.witness == id) + || unfiltered.attach.iter().any(|a| a.witness == id) }) .map(|(id, ord)| (*id, *ord)) .collect(); @@ -622,7 +622,7 @@ impl StateWriteProvider for MemState { self.begin_transaction()?; let mut witnesses = LargeOrdMap::new(); mem::swap(&mut self.witnesses, &mut witnesses); - let mut witnesses = witnesses.unbox(); + let mut witnesses = witnesses.release(); for (id, ord) in &mut witnesses { if matches!(ord, WitnessOrd::Mined(pos) if pos.height() < after_height) { continue; @@ -693,7 +693,7 @@ pub struct MemContractState { impl MemContractState { pub fn new(schema: &Schema, contract_id: ContractId) -> Self { - let global = TinyOrdMap::from_iter_unsafe( + let global = TinyOrdMap::from_iter_checked( schema .global_types .iter() @@ -919,8 +919,8 @@ impl> ContractStateAccess for MemContract { ) }); let iter = Iter { - src: state.known.as_inner(), - iter: constructor(state.known.as_inner()), + src: state.known.as_unconfined(), + iter: constructor(state.known.as_unconfined()), depth: u24::ZERO, last: None, constructor: Box::new(constructor), @@ -1243,7 +1243,7 @@ impl IndexReadProvider for MemIndex { .contract_index .get(&contract_id) .ok_or(IndexInconsistency::ContractAbsent(contract_id))?; - Ok(index.public_opouts.to_inner()) + Ok(index.public_opouts.to_unconfined()) } fn opouts_by_outputs( @@ -1389,9 +1389,7 @@ impl IndexWriteProvider for MemIndex { opouts.push(opout)?; } None => { - index - .outpoint_opouts - .insert(output, confined_bset!(opout))?; + index.outpoint_opouts.insert(output, medium_bset!(opout))?; } } } @@ -1430,9 +1428,7 @@ impl IndexWriteProvider for MemIndex { opouts.push(opout)?; } None => { - index - .outpoint_opouts - .insert(output, confined_bset!(opout))?; + index.outpoint_opouts.insert(output, medium_bset!(opout))?; } } } diff --git a/src/persistence/mod.rs b/src/persistence/mod.rs index b2da2a38..d013c842 100644 --- a/src/persistence/mod.rs +++ b/src/persistence/mod.rs @@ -22,8 +22,8 @@ //! Module defines API used by providers of persistent data for RGB contracts. //! //! These data include: -//! 1. Stash: a consensus-critical data for client-side-validation which must be -//! preserved and backed up. +//! 1. Stash: a consensus-critical data for client-side-validation which must be preserved and +//! backed up. //! 2. Contract state, updated with each enclosed consignment and disclosure. //! 3. Index over stash, which simplifies construction of new consignments. //! diff --git a/src/persistence/stash.rs b/src/persistence/stash.rs index ace8a820..937b71d0 100644 --- a/src/persistence/stash.rs +++ b/src/persistence/stash.rs @@ -511,7 +511,7 @@ impl Stash

{ let (ifaces, iimpls): (BTreeSet<_>, BTreeSet<_>) = consignment .ifaces - .into_inner() + .release() .into_iter() .fold((bset!(), bset!()), |(mut keys, mut values), (k, v)| { keys.insert(k); @@ -521,12 +521,12 @@ impl Stash

{ self.consume_kit(Kit { version: consignment.version, - ifaces: Confined::from_collection_unsafe(ifaces), + ifaces: Confined::from_checked(ifaces), schemata: tiny_bset![consignment.schema], - iimpls: Confined::from_collection_unsafe(iimpls), + iimpls: Confined::from_checked(iimpls), supplements: consignment.supplements, types: consignment.types, - scripts: Confined::from_collection_unsafe(consignment.scripts.into_inner()), + scripts: Confined::from_checked(consignment.scripts.release()), signatures: consignment.signatures, }) } diff --git a/src/persistence/stock.rs b/src/persistence/stock.rs index da57f097..de808c2e 100644 --- a/src/persistence/stock.rs +++ b/src/persistence/stock.rs @@ -423,9 +423,9 @@ mod fs { } pub fn is_dirty(&self) -> bool { - self.as_stash_provider().is_dirty() || - self.as_state_provider().is_dirty() || - self.as_index_provider().is_dirty() + self.as_stash_provider().is_dirty() + || self.as_state_provider().is_dirty() + || self.as_index_provider().is_dirty() } pub fn set_path(&mut self, path: impl ToOwned) { @@ -772,8 +772,7 @@ impl Stock { transitions.insert(opout.op, transition.clone()); let bundle_id = self.index.bundle_id_for_op(transition.id())?; - // 2. Collect secret seals from terminal transitions to add to the consignment - // terminals + // 2. Collect secret seals from terminal transitions to add to the consignment terminals for typed_assignments in transition.assignments.values() { for index in 0..typed_assignments.len_u16() { let seal = typed_assignments.to_confidential_seals()[index as usize]; @@ -849,7 +848,7 @@ impl Stock { ifaces.insert(iface.clone(), iimpl); } - let ifaces = Confined::from_collection_unsafe(ifaces); + let ifaces = Confined::from_checked(ifaces); let mut bundles = BTreeMap::::new(); for bw in bundled_witnesses.into_values() { @@ -869,7 +868,7 @@ impl Stock { Confined::try_from(terminals).map_err(|_| ConsignError::TooManyTerminals)?; let (types, scripts) = self.stash.extract(&schema_ifaces.schema, ifaces.keys())?; - let scripts = Confined::from_iter_unsafe(scripts.into_values()); + let scripts = Confined::from_iter_checked(scripts.into_values()); let supplements = Confined::try_from(supplements).map_err(|_| ConsignError::TooManySupplements)?; let signatures = @@ -1021,7 +1020,7 @@ impl Stock { let mut data_main = true; let lookup_state = if let InvoiceState::Data(NonFungible::RGB21(allocation)) = &invoice.owned_state { - Some(DataState::from(allocation.clone())) + Some(DataState::from(*allocation)) } else { None }; @@ -1061,38 +1060,38 @@ impl Stock { } } } - // Add change + // Add payments to beneficiary and change match invoice.owned_state.clone() { InvoiceState::Amount(amt) => { + // Pay beneficiary if sum_inputs < amt { return Err(ComposeError::InsufficientState.into()); } - let change_seal = output_for_assignment(contract_id, assignment_id)?; - let blinding_beneficiary = pedersen_blinder(contract_id, assignment_id); - let blinding_change = pedersen_blinder(contract_id, assignment_id); + let sum_main = sum_inputs - sum_alt; + let (paid_main, paid_alt) = + if sum_main < amt { (sum_main, amt - sum_main) } else { (amt, Amount::ZERO) }; + let blinding_beneficiary = pedersen_blinder(contract_id, assignment_id); - // Pay beneficiary - let mut paid_main = Amount::ZERO; - let mut paid_alt = Amount::ZERO; - if sum_inputs > amt { - paid_main = if sum_main < amt { sum_main } else { amt }; + if paid_main > Amount::ZERO { main_builder = main_builder.add_fungible_state_raw( assignment_id, beneficiary, paid_main, blinding_beneficiary, )?; - if sum_main < amt { - paid_alt = amt - sum_main; - alt_builder = alt_builder.add_fungible_state_raw( - assignment_id, - beneficiary, - paid_alt, - blinding_beneficiary, - )?; - } } + if paid_alt > Amount::ZERO { + alt_builder = alt_builder.add_fungible_state_raw( + assignment_id, + beneficiary, + paid_alt, + blinding_beneficiary, + )?; + } + + let blinding_change = pedersen_blinder(contract_id, assignment_id); + let change_seal = output_for_assignment(contract_id, assignment_id)?; // Pay change if sum_main > paid_main { diff --git a/src/stl/chain.rs b/src/stl/chain.rs index 35c13b79..b3d055c3 100644 --- a/src/stl/chain.rs +++ b/src/stl/chain.rs @@ -49,8 +49,7 @@ impl ProofOfReserves { let vout: u32 = utxo.unwrap_struct("vout").unwrap_uint(); let utxo = Outpoint::new(txid, vout); - let proof = - SmallBlob::from_collection_unsafe(value.unwrap_struct("proof").unwrap_bytes().into()); + let proof = SmallBlob::from_checked(value.unwrap_struct("proof").unwrap_bytes().into()); Self { utxo, proof } } diff --git a/src/stl/mime.rs b/src/stl/mime.rs index 1e58f3fd..4f9c2188 100644 --- a/src/stl/mime.rs +++ b/src/stl/mime.rs @@ -57,11 +57,7 @@ impl MediaType { let (ty, subty) = s.split_once('/').expect("invalid static media type string"); MediaType { ty: MediaRegName::from(ty), - subtype: if subty == "*" { - None - } else { - Some(MediaRegName::from(subty)) - }, + subtype: if subty == "*" { None } else { Some(MediaRegName::from(subty)) }, charset: None, } } @@ -90,11 +86,7 @@ impl fmt::Display for MediaType { f, "{}/{}", self.ty, - if let Some(subty) = &self.subtype { - subty.to_string() - } else { - s!("*") - } + if let Some(subty) = &self.subtype { subty.to_string() } else { s!("*") } ) } } diff --git a/src/stl/stl.rs b/src/stl/stl.rs index 697d15f0..aef583cc 100644 --- a/src/stl/stl.rs +++ b/src/stl/stl.rs @@ -41,7 +41,7 @@ use crate::LIB_NAME_RGB_STD; /// Strict types id for the library providing standard data types which may be /// used in RGB smart contracts. pub const LIB_ID_RGB_STORAGE: &str = - "stl:Srtqau4!-KXSB1G8-CSroocF-8N2oTi4-L5c2IQk-y$OJQz0#jeep-freedom-student"; + "stl:WDzyU4h6-vYKDkSa-2BfqXDg-d$LZbmr-oQgDi!z-rINtGDY#nerve-patrol-special"; /// Strict types id for the library providing standard data types which may be /// used in RGB smart contracts. @@ -50,7 +50,7 @@ pub const LIB_ID_RGB_CONTRACT: &str = /// Strict types id for the library representing of RGB StdLib data types. pub const LIB_ID_RGB_STD: &str = - "stl:R5kQAOh4-zB20Wn0-2z3MtK!-dNvcxhT-nZOmQtF-DWVziK4#forget-radar-macro"; + "stl:WfNRJuO!-BI3uve1-vVFxCsg-YP!o40Q-RuomKHn-SNz$6u0#paper-sunset-modular"; fn _rgb_std_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB_STD), tiny_bset! { diff --git a/stl/RGBStd@0.11.0.sta b/stl/RGBStd@0.11.0.sta index b17dae39..b9f4c5a5 100644 --- a/stl/RGBStd@0.11.0.sta +++ b/stl/RGBStd@0.11.0.sta @@ -1,20 +1,20 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:R5kQAOh4-zB20Wn0-2z3MtK!-dNvcxhT-nZOmQtF-DWVziK4#forget-radar-macro +Id: stl:WfNRJuO!-BI3uve1-vVFxCsg-YP!o40Q-RuomKHn-SNz$6u0#paper-sunset-modular Name: RGBStd Dependencies: StrictTypes#century-comrade-chess, AluVM#congo-archive-folio, - BPCore#garbo-radius-peru, + RGBCommit#pretend-carpet-caesar, + CommitVerify#miller-pancake-elastic, + BPCore#totem-holiday-helena, Std#ralph-blue-lucky, - RGBCommit#miranda-blue-promise, - CommitVerify#tennis-peace-olympic, Bitcoin#signal-color-cipher -Check-SHA256: 57bd2f9f8893b8613229dd87199163809bd240909a5270170df9205a61218824 +Check-SHA256: 58bced7ae94fd69ea1b838c02cfe84e2fdc93ebd141716a9f2e09ea6e0ee4e44 22w{tQ*>kpMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r3sZD*X=8L$d2nTOVsJHoA?4$swuZp1 -Wc+9AOf`(TIbyKWjTy4WkGaM+1wm|eR!wgnmidRhTh1hu7-!n@1Cr{swqbZoGSd8tmgp<3rE>;CP(yEW -Wy&lbZ-bfLFbqC#o>4E?M+l67UG^w8*<_XZ#%uyqCj(P-WZ`BskSBGhsMxw5cp3r9ndQi`YyI(VS@-_~ -yvW73<_S_qLPKwDZE1Aj(cK(6LD#rwNz2*s{WQVl8bg5o8r0R+^o=IRl4@lPLvL+uX>?X)a%pCH^=uPj +Wc+9AOf`(TIbyKWjTy4WkGaM+1wm|eR!w-TVH%#u=VlnfZ>Nv}LGS$+_c7XW{%HY1pI1#pg(nG8M?yny +ZEb0EdIKHbX?@G`sCP;~6&DQwR5(-fxrUo0Th*%N~j&hfyEy&;~+KLvM0r$}AplgPGkh3_fq3Q7_j=2#kPT_9!;lWR>~GYywm#15DT%6aZ| SrJerP1pIOD57`7Ol|-ogQ6Pjg~y>s-v>!^VNPLfWv4Jz0xkJm$nc4yMWR2J-cc#Q6SofWC)gp7L6!Sc @@ -112,16 +112,16 @@ X<=@3fzvD`*Td*C*~4P}$n=kpoj->tyfRKrOAiJKV)22*KzX>Mnd(*pTEa(nZJgZT^?2ML$C)mClK yTm8WaJ}8CMy}crPGN0jWJYOaY-Dp&Wo=1hmm!0y(Hu`f(Fijc5*b_M4dVsY!8b|ZDhq!3`K5r ZB}7&X<=@3bC}8#qjhfwd&>tyAtR<)2LcK~xyL-@iqBUFK20Q^G*lRL(MHiY2Qv~?ZfS3BR$+2!VQzGDQ)O*QWc`7zgMJGKo2X9f$Rb16EcuX?V{EC+7E3Kt-S_BIANsx)WKb16EcuX?V{EC+7E3Kt-Xy#@{fm*cG2Kz`=!#X@TN|)+&DTO&#N`#a| -t^|#_0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73=HMjpRO5jtVBkIp97D5aLO3Aj@Fk!Sr;Si; -g|i8f`~wDLZ*^j9WdH^Q40K^|a%FTuZewU~asqE2midRhTh1hu7-!n@1Cr{swqbZoGSd8tmgp<3rE^*Y -3ie5miM&AS6)G$kR*q@g$mKZdb11hjP09JfdoT=iVQ_L~bV7A*WNc*u;bt_DCv~W(*t#Bg8Uf0g<;b#Y -{qb&D_x}UD$i=tj;3V->3vY08WpqJqV`y)30&gCc`G>t* -&Lor=XWH@ulIpd#VR%e3()@~+=qs(Ib7|8CsHoVw9(Wo7%9-WJvTObEZdv#L1H8z^x8~p^@l@l1C}7||2^>SSW3vY08WpqJqV`y)30;XBAP%ncq +!=bH)!l@Cw+&ABgf({>*%N~j&hfyEy&}imnMuA$i)CT)VRl_Nv}LGS$+_c7XW{%HY1pI1#pg(u)7@l@l1C}7||2^>SSWI^CwqAYJB+ZKALhJOg5MR2m;D19&dx0-7pM3Z=O*v*GCA9fL-<|HrZsA`NnJlR3~_8 cxJL|x?WKK>7x;m>=zTw_)~GYywm#VTK~nd#>@L7b8`aWW;Bo|b*QM= -x*m8M0m_->$g*qw@ori7{{y_p#kc0FwrKJIUBJXnP(l%Y$cDDuY1Bm#?@QxYCjWldxIc>zVQyn+Z*pa1 +@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_Dv2#b#7#AWn@=rbZ%vHa|QwmaCKr=X>@L7b8`ZCt6>_R$meDl +!f&UL0YUHm7xyvRasFumLZ4SnM1?1+wrKJIUBJXnP(l%Y$cDDuY1Bm#?@QxYCjWldxIc>zVQyn+Z*pa1 LUnFrY-Mu+5PERL&XRlkHbi{HTXV@lftrJ^-0dkLK3Z5*2ahm*5JPWnb7^O8ZDnqBW?^h|Wd;ogc4cyN X>V=;l-_zLn%tmAe68Jly{Qj?Kss0ny)C8xzFm#1PkyMk2y}8`ZgXa3astXM9&dx0-7pM3Z=O*v*GCA9 -fL-<|HrZsA`NnJlR3~AEBGG%U@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_Du$g*qw@ori7{{y_p#kb}Idy}<28ig(gSpg+?&9*`C2(3=%09avzwZKZf-~wC%;bt_D -Cv~W(*t#Bg8Uf0g<;b#Y{qb&D_x}UD$i=tj+lpEmf)o&SDDwD>KtpQ8M_qJyiO1VIUJ=H=)@ii_00000 -00000|Nj60000002WMq&WpinB0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73=IpZOcE6dyPJT+t -k%Iz|R3_dTDo~ZL;TN>NvV?G00{!&W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p -#kc0e0rJ$F*-AP6Kc@Z@L=aa)%5&TMP!2h_{lmvKE;fPy0000000030|Ns9000007Vs&n0Y-Mu*2?6@> -Xs-`LD)Qj52!6cP*Z!G$Tm$Q_lGhVX|8CsHoVw -9(Wo7%9-WJvTObEZdv#L1H8z^x8^x}V1~%|K(CXMeNGCqZ9Jrf_R +$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1>~KtpQ8M_qJyiO1VIUJ=H=)@ii_00000 +00000|Nj60000002WMq&WpinB0(h%o8lK4KW*EY6r;q_b@BJ6|G1_tdX#ql?S4~8PC+xE3cE6dyPJT+t +k%Iz|R3_dTDo~ZL;TN>NvV?G00{zkt6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4Sn +M1?2A0rJ$F*-AP6Kc@Z@L=aa)%5&TMP!2h_{lmvKE;fPy0000000030|Ns9000007Vs&n0Y-Mu*2?6@> +Xs-`LD)Qj52!6cP*Z!G$Tm$Q_lGhVXNv}LGS$+_c7XW{%HY1pI1#pg(o?CV1~%|K(CXMeNGCqZ9JrfV!Z000000RI300000001I<Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HLtfv$so3kRF1 PV2}fOp_vjQ6FdFHId|lr&gK9B000000000400000000YNbaY{3Xl-R~baMa- -0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73=7ez#lPpg3!?y@aX^XIja4CK{WF&t@k=WXUZP9(Y +0(h%o8lK4KW*EY6r;q_b@BJ6|G1_tdX#ql?S4~8PCxmeglPpg3!?y@aX^XIja4CK{WF&t@k=WXUZP9(Y H~bairNa{vkf;?xyT5z&Ua+M@}m OiDpYxh>^^GknUxTJ!XL#OUcE0frb5ENEw7&f?o%+)B!ZpG}K!%4G?I4vp$|ttu*CMF0Q*000000RI30 0000001rcNZgXj8Zf#|5baZlcWd;ogc4cyNX>V=;l-_zLn%tmAe68Jly{Qj?Kss0ny)C8xzFm#1PkyMk 2y}8`ZgXa3astXM9&dx0-7pM3Z=O*v*GCA9fL-<|HrZsA`NnJlR3~AEBGG%U@MZ$v=XJ?|;InIPy66cF -fOYp#JM2r7_Du$g*qw@ori7{{y_p#kb}Idy}<28ig(g -Spg+?&9*`C2(3=%09avzwZKZf-~wC%;bt_DCv~W(*t#Bg8Uf0g<;b#Y{qb&D_x}UD$i=tj+lpEmf)o&S -DDwD>KtpQ8M_qJyiO1VIUJ=H=)@ii_0000000000|Nj60000002WMq&WpinB0^w#fkSBGhsMxw5cp3r9 -ndQi`YyI(VS@-_~yvW73=IpZOcE6dyPJT+tk%Iz|R3_dTDo~ZL;TN>NvV?G00{!& -W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p#kc0e0rJ$F*-AP6Kc@Z@L=aa)%5&TMP!2h_{lmvKE;fPy +fOYp#JM2r7_Du_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1>~KtpQ8M_qJyiO1VIUJ=H=)@ii_0000000000|Nj60000002WMq&WpinB0(h%o8lK4KW*EY6r;q_b +@BJ6|G1_tdX#ql?S4~8PC+xE3cE6dyPJT+tk%Iz|R3_dTDo~ZL;TN>NvV?G00{zk +t6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?2A0rJ$F*-AP6Kc@Z@L=aa)%5&TMP!2h_{lmvKE;fPy 0000000030|Ns9000007Vs&n0Y-Mu*2?6@>Xs-`LD)Qj52!6cP*Z!G$Tm$Q_lGhVX|8CsHoVw9(Wo7%9-WJvTObEZdv#L1H8z^x8^x}V1~%|K(CXMeNGCq +00960|Nj60000JaV`ybNv}LGS$+_c7XW{%HY1pI1#pg(o?CV1~%|K(CXMeNGCq Z9JrfV!Z000000RI300000001I<Z4!V_T!KNI`QJ| h6;Zj^jB$MPK+?7Lu3>C`4HLtfv$so3kRF1PV2}fOp_vjQ6FdFHId|lr&gK9B -000000000400000000YNbaY{3Xl-R~baMa-0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73=7ez# +000000000400000000YNbaY{3Xl-R~baMa-0(h%o8lK4KW*EY6r;q_b@BJ6|G1_tdX#ql?S4~8PCxmeg lPpg3!?y@aX^XIja4CK{WF&t@k=WXUZP9(YH~bairNa{vkf;?xyT5z&Ua+M@}mOiDpYxh>^^GknUxTJ!XL#OUcE0frb5ENEw7&f?o%+)B!Z pG}K!%4G?I4vp$|ttu*CMF0Q*000000RI300000001QKKZggR3Ze?;-WpV=n0(LS22}5sgbY*UINn`{C -00whoXk~3-00jX8;bt_DCv~W(*t#Bg8Uf0g<;b#Y{qb&D_x}UD$i=tjlv2~%1FNg3QJ<&wKF}2F)J=Uc -Km7gx`duV?R0NO^0S9MgZe??6a{vVa0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73=AQ^GNjk^^ +00whoXk~3-00jX8c&lL=p2+8B7{YI-kO4vO{TKH!+HwAA0YaZwO+p#+${p KVqYC0|{wnVPj=UZE$P=1pxt8$PakD#zGc4+eY|aXXwx;YM0QXyiqR;Jsw2Z*{J&j1#@+9aBKht0Rd++ -hrkGM>lK$g*qw@ori7{{y_p#kb~^Qq$W5tE;F{pQrXd&=l*`O?@#x{Qdy?T_k!`1dtE`2WMq&WpinB -00jX8;bt_DCv~W(*t#Bg8Uf0g<;b#Y{qb&D_x}UD$i=tjp9m~TI>-W|y2ahx3nF|Vuawki#7NH?S|Q-Q +hrkGM>lK_R$meDl +!f&UL0YUHm7xyvRasFumLZ4SnM1?1mQq$W5tE;F{pQrXd&=l*`O?@#x{Qdy?T_k!`1dtE`2WMq&WpinB +00jX8c&lL=p2+8B7{YI-kO4vO{TKH!+HwAA0YaZwO+-W|y2ahx3nF|Vuawki#7NH?S|Q-Q !u2{b0tIPiVPjm(ZiUQ7;QU9z@vLsQU{;Z*FvDZgf*=XLAJs015)(W;Bo|b*QM=x*m8M0m_-> -$g*qw@ori7{{y_p#kc0R=zxYCD0L!x4tB5Hm3vFbl?lapNXe%XU~*fKJ0+X}A;%YO&?-P3Om(ZiUQ7;QU9z@vLsQU{;Z*FvDZgf*=XLAJs015(lt6>_R$meDl!f&UL0YUHm +7xyvRasFumLZ4SnM1?1|=zxYCD0L!x4tB5Hm3vFbl?lapNXe%XU~*fKJ0+X}A;%YO&?-P3O4E?M+l67UG^w8*<_XZ #%uyqCt-#n(R;4&W&+>mb;*F>vukd;=m`ygb@x#_>`RmOO$cpebYWy+bYTDq0!8YhU)%QMkO4aJ;_ZeC e;xE!X<$x_Fs4If6Z`oP*&DQ20rFt3ZOHs70;T-agdg$OP=xIp;K4#IcLF!~asU7T000000RI3000000 00(DmZ(?C=a{vkgMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{v -gzX#P!9p!}0yp?_0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73<~G4Jq57bK6Q|uUfIMEX^1}Vv +gzX#P!9p!}0yp?_0(h%o8lK4KW*EY6r;q_b@BJ6|G1_tdX#ql?S4~8PCpN(}q57bK6Q|uUfIMEX^1}Vv 6tLB!)|10-o)0prc>n+a000000RI300000001IJrb7^O8ZDnqBa{vkgMe3tp+xFv-0Xp&G?S=|}9rRae -U`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0^w#fkSBGhsMxw5cp3r9ndQi` -YyI(VS@-_~yvW73<~G4Jq57bK6Q|uUfIMEX^1}Vv6tLB!)|10-o)0prc>n+a000000RI300000000(kq +U`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0(h%o8lK4KW*EY6r;q_b@BJ6| +G1_tdX#ql?S4~8PCpN(}q57bK6Q|uUfIMEX^1}Vv6tLB!)|10-o)0prc>n+a000000RI300000000(kq WMyS-a{vhfMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P !9p!}0yp?_0000000000{{R300000033g#@Wo~0>Wpe-t0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If 6Z`oP*&DQ20rFt3ZOHs70;T-agdg$OP=xIp;K4#IcLF!~asU7T000000RI300000000w1pa&K~T00{y` @@ -196,10 +196,10 @@ I`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pZODNcTE%yi#yB_`&o2yJC_VPs)+VE_pNMe3tp +xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_00000 00000{{R30000002WM<=Vqt7^015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV* -{3!yZ{M3XW@z+pGEG0000000000{{R30000003t@9}X=iS2Wo~qH015&{>Z4!V_T!KN -I`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pGEG0000000000 +I`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pGEG0000000000 {{R300000033g#@Wo~0>Wpe-t0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*&DQ20rFt3ZOHs7 0;T-agdg$OP=xIp;K4#IcLF!~asU7T000000RI300000000w1pa&K~T00{y`>Z4!V_T!KNI`QJ|h6;Zj ^jB$MPK+?7Lu3>C`4HI&hQW&>`ZdvNB=ndTz*X~v;Uq>`<)y^XImOPdju4Lk0000000030000000000B @@ -226,10 +226,10 @@ AMw{vgzX#P!9p!}0yp?_0XGgC8a;P^F9!TQys`YZF3(w8EA1?b(;%Z(R5QEQf&c&j000000RI3000000 5M*U$VRdYDPjF>&VRUJ4ZU6)V00eGtZe;)f009JZZ*64&1pxv@>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7 Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pn8fQnYaJ?> kL6XG(3esa0W5QyJn#ohg24a)000000093000000000YTY;R&=Y*Tb$bY%bu0daC2M$y&U#EU!@hie?U NS!6hQhW-W8INxxf{Fuzg#Z8m000000RI300000001IJrb7^O8ZDnqBa{vhenIb5$QI^$V6PNW$vdMt6 @@ -237,42 +237,42 @@ d#0>Rmk*`=dQ)K)k7d+w0000000000{{R300000033g#@Wo~0>Wpe-t0ak~ln%Z2n%R^9PBgQXo1&n-R ?HR4hpUd;mfGub-hyVZp000000RI300000001I?-VQzD2bZKvHa{vheI6k{n`X+XC81LasyqR+($`>jw nD57lV5q8m)(2RS0000000000{{R30000003T1e7Wo~n6Z*Fq{2?1%uWwlwnKfCTqC!TnpV`xO%(e*mX P$JGS1-q69d*1*6000000093000000000JMa&m8Sa{vhe!)N7;Jv;(oC!o$&iP#xB8s<*^%!GF?$0)U9 -@BFJ?0000000000{{R300000031nq$g*qw@ori7{{y_p#kc0R +@BFJ?0000000000{{R300000031nq_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?1| =zxYCD0L!x4tB5Hm3vFbl?lapNXe%XU~*fKJ0+Y3No{a!Nn`~900#g7Kp+4EOKEfl2nTj$a&u{KZUL0u dMBFPphtYI-F&^N4}d^ASP8u?rT@NNjjT_8sJ8}bW?^Gxa{vheIma44eh@g%x4xWoee18jkej%UZIDDt -P|$FhF<2o`0000000000{{R30000002y0{baMa+0b@PW iLgsaRw~c9&Ny{YCK_TCaeS`x+X~XLW@}|UwEzGB000000RI300000000ne;aAk7>Me3tp+xFv-0Xp&G ?S=|}9rRaeU`~uMrbA>C`}q*r{eiB7ehUYis7~w1CQOqefKeZ3;Wd%uopqe!>_vj92XkX`X>fFN00{zO a5aA+<>R2XhQO_4{AcS-HH^7AVzASV8M4NYxyCjU1gEwF5PXV6FZDLo1#Vec_~kix7WfVQ#Sd|CM9$^_ 0000000030{{R300000Ab7^O8VRUtJWpe-u0pipZP!Z9Fy4s@&s7y*hO1UlNfirx{z*_V4e8lMKApwRM 5G-hCV9w&(UffE`hM!G~aLQ!~gAR@AcC9KZUqt`_000000093000000000P0Z)9m^X=QQ)0|;Sab98cH -V{`xrZ+2yJa%p5`0R?7hZeeWy7*1hrWn@NaWo%?Yb8~5DZf#|5bX0k8Wd;KRX=DQ7W;Bo|b*QM=x*m8M -0m_->$g*qw@ori7{{y_p#kb~%{^Dg=h-~N_zJ`Red1EINWrM}GXaQb}6c#qIM2EQqZeeX@0!8YhU)%QM +V{`xrZ+2yJa%p5`0R?7hZeeWy7*1hrWn@NaWo%?Yb8~5DZf#|5bX0k8Wd;KRX=DO;t6>_R$meDl!f&UL +0YUHm7xyvRasFumLZ4SnM1?1Z{^Dg=h-~N_zJ`Red1EINWrM}GXaQb}6c#qIM2EQqZeeX@0!8YhU)%QM kO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*&DQ20rFt3ZOHs70;T-agdg$OP=xIp;K4#IcLF!~atLx|b7gXN -Wn=>3(cK(6LD#rwNz2*s{WQVl8bg5o8r0R+^o=IRl4@n|>JtwI*nu%&Q~z;Vl^%5wS6(#;{6ajG64wDP -k{-(!PGN0jWJYOaY-B}vbY*UHX>V>+d2nS00|IGe0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73 -=45pqLa7y@JVOzJ)&GXo9MeQ_qmbcB?4VH0I#X{*-UM!8ZDj&Q>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7 -Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pJtwI*nu%&Q~z;Vl^%5wS6(#;{6ajG64wDP +k{-(!PGN0jWJYOaY-B}vbY*UHX>V>+d2nS00|IGe0(h%o8lK4KW*EY6r;q_b@BJ6|G1_tdX#ql?S4~8P +CuDUVLa7y@JVOzJ)&GXo9MeQ_qmbcB?4VH0I#X{*-UM!8ZDj&Q>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7 +Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pxis%LHy=ZDj&Q>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV* -{3!yZ{M3XW@z+p|8C -sHoVw9(Wo7%9-WJvTObEZdv#L1H8z^x8`-^P59r=ivkNv}LGS$+_c7XW{%HY1pI1#pg(r37P59r=ivkC`}q*r8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_ -2y$g}WpZ|9WCG#Q-5feW*SKg&%h~b$G{NN>LxBDo)YaDXjV8yEYGv>06AuO0fiYoI|8ZKC9(55{UNs2( -LOhfb*8wh)9?KX`VQpn(MrmbiWK?otZgXjLX>V>+d2nS00|IGe0^w#fkSBGhsMxw5cp3r9ndQi`YyI(V -S@-_~yvW73<}^|dt`n9TUcD*&5hFi^PVx{q1b@^7zTcrn*%qZTXasIyZDj&Q>Z4!V_T!KNI`QJ|h6;Zj -^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pV>+d2nS00|IGe0(h%o8lK4KW*EY6r;q_b@BJ6|G1_td +X#ql?S4~8PCp1zIt`n9TUcD*&5hFi^PVx{q1b@^7zTcrn*%qZTXasIyZDj&Q>Z4!V_T!KNI`QJ|h6;Zj +^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pZ4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1 -V6JV*{3!yZ{M3XW@z+ppG1a4t% +V6JV*{3!yZ{M3XW@z+ppG1a4t% WdcR&qhH(he1kloHngE|MP03Qu=#Wn@WaVPjZ4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HJ_1fvw5 rj-B|XP@r^w5ufb=C_Ju$l1`nW&GEpSWb-!P<3KgX>@L7b8`d&00eY+X=DHe0Rr`G6JjIwIj2eqliWu} @@ -287,19 +287,19 @@ b#QQOO<`~a0RRdChQQu{9Qsc78(()~0WKn7PS!o2w>NdhVC3z)=0wst0Y0}#&o=rIt`?a&Fa))1(#TPD !jC~PR_M88ajEx^RR910000000RI300000000>icaByr>bz%bw25EG2Wo%{u1Z`z>VF3nbY;R&=Yyt&u cWz~50|$0tY-Mg^c?1e!b8~5DZf#|5bOi@zWo~72X>$e&baG*Cb7^#GZ*B((Wq5RDZgXjGZU_lwcw=R7 bZKvH2?|qnaBys8ZDnqB1_TLXZ*FvDZgfdx0S1_@x7s+uExGllhUte$e$Op^sMk_Bzn7+|3$axzr3rLt -ZDn(GVQp{#07wU8a%Ew3Z*l_RW;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p#kc0R=zxYCD0L!x4tB5H +ZDn(GVQp{#07wU8a%Ew3Z*l^7t6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?1|=zxYCD0L!x4tB5H m3vFbl?lapNXe%XU~*fKJ0+Y8VQy}3bYXO9Z*Fq{3ISO55nb$VTQ?X>xA?XXJF{2H^dT~zWT)b=0OBT1 J2L^)|BtqCIH`QK6F1|v)Z${_U85pQj^zm^DU~vi8uS+c0000000030000000000FRB~Z%b7^#GZ*ECu VPj4E?M+l67UG^w8*<_XZ#%uyqCt-#n(R;4&W&+>mb;*F>vukd;=m`ygb@x#_>`RmOO$cpebYWy+ bYTDq0!8YhU)%QMkO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*&DQ20rFt3ZOHs70;T-agdg$OP=xIp;K4#I cLF!~asU7T000000RI300000000(DmZ(?C=a{vkgMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r -8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0^w#fkSBGhsMxw5cp3r9ndQi`YyI(VS@-_~yvW73 -<~G4Jq57bK6Q|uUfIMEX^1}Vv6tLB!)|10-o)0prc>n+a000000RI300000000wDpaCLNZ015&{>Z4!V -_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pGEG00000 +8?;yf@?frQ$owe+rTo-{AMw{vgzX#P!9p!}0yp?_0(h%o8lK4KW*EY6r;q_b@BJ6|G1_tdX#ql?S4~8P +CpN(}q57bK6Q|uUfIMEX^1}Vv6tLB!)|10-o)0prc>n+a000000RI300000000wDpaCLNZ015&{>Z4!V +_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1V6JV*{3!yZ{M3XW@z+pGEG00000 00000{{R30000003t@9}X=iS2Wo~qH015&{>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI~v{(W1 -V6JV*{3!yZ{M3XW@z+pGEG0000000000{{R300000033g#@Wo~0>Wpe-t0!8YhU)%QM kO4aJ;_ZeCe;xE!X<$x_Fs4If6Z`oP*&DQ20rFt3ZOHs70;T-agdg$OP=xIp;K4#IcLF!~asU7T00000 0RI300000000w1pa&K~T00{y`>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI&hQW&>`ZdvNB=ndT diff --git a/stl/RGBStd@0.11.0.stl b/stl/RGBStd@0.11.0.stl index cd025c0d..4ceed34c 100644 Binary files a/stl/RGBStd@0.11.0.stl and b/stl/RGBStd@0.11.0.stl differ diff --git a/stl/RGBStd@0.11.0.sty b/stl/RGBStd@0.11.0.sty index 27652451..83bfcf75 100644 --- a/stl/RGBStd@0.11.0.sty +++ b/stl/RGBStd@0.11.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:R5kQAOh4-zB20Wn0-2z3MtK!-dNvcxhT-nZOmQtF-DWVziK4#forget-radar-macro + Id: stl:WfNRJuO!-BI3uve1-vVFxCsg-YP!o40Q-RuomKHn-SNz$6u0#paper-sunset-modular Name: RGBStd Version: 0.11.0 Description: RGB standard library @@ -36,31 +36,7 @@ import AluVM#congo-archive-folio use IsaSeg#size-shake-olga use LibSeg#lemon-philips-horse -import BPCore#garbo-radius-peru - use TapretNodePartner#roger-member-educate - use TapretProof#marco-border-sample - use TapretPathProof#kiwi-mirror-paris - use Method#bali-boris-plasma - use TapretRightBranch#miracle-patriot-touch - use BlindSealTxPtr#fortune-iron-salmon - use OpretProof#good-village-flex - use AnchorMerkleProofTapretProof#meter-mobile-appear - use SecretSeal#dollar-iris-wizard - use AnchorMerkleProofOpretProof#prime-salsa-magnet - use BlindSealTxid#media-judge-anita - use TxPtr#italian-july-eddie - -import Std#ralph-blue-lucky - use AlphaCaps#picnic-soprano-aurora - use AsciiPrintable#ultra-sunset-format - use Bool#oxygen-complex-duet - use AlphaNumDash#sponsor-snake-nice - use AlphaCapsNum#aladdin-zebra-marble - use AlphaNumLodash#percent-bingo-caesar - use AlphaCapsLodash#duet-hammer-labor - use AlphaSmallLodash#pioneer-eagle-spell - -import RGBCommit#miranda-blue-promise +import RGBCommit#pretend-carpet-caesar use ExtensionSchema#active-eddie-empty use BundleId#carmen-farmer-diesel use AttachState#lady-japan-fiesta @@ -130,7 +106,7 @@ import RGBCommit#miranda-blue-promise use RevealedData#olivia-copper-stamp use AssignRevealedValueBlindSealTxid#photo-jump-silicon -import CommitVerify#tennis-peace-olympic +import CommitVerify#miller-pancake-elastic use MerkleHash#horse-popcorn-bundle use MerkleProof#price-aloha-grid use ReservedBytes1#origin-roger-relax @@ -138,6 +114,30 @@ import CommitVerify#tennis-peace-olympic use ReservedBytes4#young-goblin-academy use ReservedBytes8#rudolf-tape-adrian +import BPCore#totem-holiday-helena + use TapretNodePartner#roger-member-educate + use TapretProof#marco-border-sample + use TapretPathProof#kiwi-mirror-paris + use Method#bali-boris-plasma + use TapretRightBranch#miracle-patriot-touch + use BlindSealTxPtr#fortune-iron-salmon + use OpretProof#good-village-flex + use AnchorMerkleProofTapretProof#meter-mobile-appear + use SecretSeal#dollar-iris-wizard + use AnchorMerkleProofOpretProof#prime-salsa-magnet + use BlindSealTxid#media-judge-anita + use TxPtr#italian-july-eddie + +import Std#ralph-blue-lucky + use AlphaCaps#picnic-soprano-aurora + use AsciiPrintable#ultra-sunset-format + use Bool#oxygen-complex-duet + use AlphaNumDash#sponsor-snake-nice + use AlphaCapsNum#aladdin-zebra-marble + use AlphaNumLodash#percent-bingo-caesar + use AlphaCapsLodash#duet-hammer-labor + use AlphaSmallLodash#pioneer-eagle-spell + import Bitcoin#signal-color-cipher use SeqNo#copper-verbal-ingrid use TxIn#slang-cherry-gizmo diff --git a/stl/RGBStorage@0.11.0.sta b/stl/RGBStorage@0.11.0.sta index 3a8672fa..b20dca2a 100644 --- a/stl/RGBStorage@0.11.0.sta +++ b/stl/RGBStorage@0.11.0.sta @@ -1,24 +1,24 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:Srtqau4!-KXSB1G8-CSroocF-8N2oTi4-L5c2IQk-y$OJQz0#jeep-freedom-student +Id: stl:WDzyU4h6-vYKDkSa-2BfqXDg-d$LZbmr-oQgDi!z-rINtGDY#nerve-patrol-special Name: RGBStorage Dependencies: + RGBLogic#memphis-martin-jump, StrictTypes#century-comrade-chess, - RGBStd#forget-radar-macro, - RGBLogic#pioneer-gong-smoke, + RGBStd#paper-sunset-modular, AluVM#congo-archive-folio, - BPCore#garbo-radius-peru, + RGBCommit#pretend-carpet-caesar, + CommitVerify#miller-pancake-elastic, + BPCore#totem-holiday-helena, Std#ralph-blue-lucky, - RGBCommit#miranda-blue-promise, - CommitVerify#tennis-peace-olympic, Bitcoin#signal-color-cipher -Check-SHA256: 5cddf0b1af2fd4aad0239f01a29cd756dd6afadece0f81c483c0ed7ba79877a4 +Check-SHA256: 603cd4d42127f4d2d9b8c717405cb4b374ad0e67b5ea7e74ee080179008f19c5 -3Q|WxQ*>`~VP|CtMe3tp+xFv-0Xp&G?S=|}9rRaeU`~uMrbA>C`}q*r3sZD*X=8L$d2nTON0|@+=y=Q> -v|4>O&vPv+=S{uLVNP~VnF~b?WpjwG22w{tQ*>lu-sGVgUxv=-u%**DuqS3%NPM4gK+g&1$YY;CP(yEWWy&lbZ-bfLFbqC#o>4E?M+l67UG^w8*<_XZ#%uyqCj(P-WZ`BskSBGh -sMxw5cp3r9ndQi`YyI(VS@-_~yvW73<_S_qLPKwDZE1Aj(cK(6LD#rwNz2*s{WQVl8bg5o8r0R+^o=IR -l4@lPLvL+uX>?X)a%pCH^=uPjBlbC`N(qzPM@Gr{imSMTSY5T*7C#t%#3&jH2SRCdV{d702?arHbyiIV +3Q|WxQ*>`~VP|CtKPPn717`<%HqHOE4GfWLyRrkqTh2vSEvOmAmtV@2wtU)%QMkO4aJ +;_ZeCe;xE!X<$x_Fs4If6Z`oP*$Y#2a%p39RC#b^b6N9ICgZ*YjqbheZ&X}DvIYNv}LGS$+ +_c7XW{%HY1pI1#pg(nG8M?ynyZEb0EdIKHbX?@G`sCP;~6&DQwR5(-fxrUo0Th*%N~j&hfyEy&;~+KLvM0r$}AplgPGkh3_fq3Q7_j=2#kPT +_9!;lWR>~GYywm#15DT%6aZ|SrJerP1pIOD57`7Ol|-ogQ6Pjg~y>s-v>!^VNPLfWv4Jz0xkJm$nc4y MWR2J-cc#Q6SofWC)gp7L6!Sc3I$AQVo7AP4Jk3r!|EoW{Zi$060oMN(jLzPuNboiNpoRS @@ -153,69 +153,69 @@ YXqYdo~D%m7H6OD0<^0n_2##VWXRdjy=DB@qgYOj1yf~hNo0M=LMPN>0NEy%g(UCHeUkYj{YR7-159lq i%V@}#Ze4JZgp)|VRC6;+#Z*Ep$a%o|1baPW>ZAoPPfv$so3kRF1 PV2}fOp_vjQ6FdFHId|V -a{vhf;bt_DCv~W(*t#Bg8Uf0g<;b#Y{qb&D_x}UD$i=tjlMuXsu{2tXFT+?;?hj39&>gq>HOrf1lB-q; -n)I5N0000000000|Ns90000004sUgIaBpdDbWd<^b#!w83IgF~G>|8CsHoVw9(Wo7%9-WJvTObEZdv#L -1H8z^x8~7j7rjFg@b(FW?*48~9t#5lC;3juy9JUg#K|!ymZ|^=0^w#fkSBGhsMxw5cp3r9ndQi`YyI(V -S@-_~yvW73=93V-fUz`Mi!Z}iQtl5;XwV(E`Zdd&WRj~^37YhpmjD0&000000RR90000000000000000 -0RR900000001!=OZ9{KvbaG*1bW?O;bY%ty2y|8CsHoVw9(Wo7%9-WJvTObEZdv#L -1H8z^x8{^m)7t~9tEf?*r}jS36zkMYeK9}${s8)2BzjZ?kPr%EZ*FvQVPkYjWCG!4G>|8CsHoVw9(Wo7 -%9-WJvTObEZdv#L1H8z^x8|P+EJ-@Z0;0Ob-P{Wzd?2rs)M&&=&l*}G;Jw22Ix+@lY;R&=Yyb)Z;bt_D -Cv~W(*t#Bg8Uf0g<;b#Y{qb&D_x}UD$i=tj)$WoGNr%=^r?uHX1d())f-38e*R52vTIsgCw000000RI300000000wetXJ~YD00{y|nGgWzc+4HN -T75Rpb1f_9O})%vPIgY23q=iObBM0=sMp|!ND`2%gc_Nxrh2qVwA%Us#V;Pkm;mDO$Szy}0000000030 -|Ns9000009W_507X<}?;a{vhfN0|@+=y=Q>v|4>O&vPv+=S{uLVNP~VnF~b?WpjwG(^?v}n^1}ZASkna -+k;MoZJUj+#nJ>$bhcTl`&GYj0000000000|NsC0000001Y}`!VE_pNN0|@+=y=Q>v|4>O&vPv+=S{uL -VNP~VnF~b?WpjwGU_W_(!uc?s(BakzdJ7?EF9^9Gyf?ad??x_c(9*_N0000000000|NsC00000024Qq` -VPj|j2?9r%5CG_S%pJ5^eKyZ?Ei30uz06@wc21cKMGa+hh^}dA%8{!~UIganLWV?BTpVMu5IA6dE0Lj! -YuMq;@!bFb0000000960|Nj60000h6Wo<`nZ(?C=Q*>c;Wd;HTYi@6MZU71bN0|@+=y=Q>v|4>O&vPv+ -=S{uLVNP~VnF~b?WpjwG1XjvFEe`q(P0Wu-jl=WoO=u#zdNXNBR;=G)$^MzI0^w#fkSBGhsMxw5cp3r9 -ndQi`YyI(VS@-_~yvW73<}#jEQ3m-<6)UHjqig^*m4co5us7ukl*0UQzs7w8g#Z8m000000RR90{{R30 -00nGmZE17>00Rh3Wo=1rWMy~;1r2X-LUnFrY-LGqWMy~&3IgF~G>|8CsHoVw9(Wo7%9-WJvTObEZdv#L -1H8z^x8{||=6W7=VqesjRYGc!>wZFzp>JB4@xD;^wu&SY_r(I?W;Bo|b*QM=x*m8M0m_->$g*qw@ori7 -{{y_p#kb}Idy}<28ig(gSpg+?&9*`C2(3=%09avzwZKZf-~wC#0000000030|Nj600000JVs&n0Y-K}l -Zgg^CV{}PwWMy~&3IgF~G>|8CsHoVw9(Wo7%9-WJvTObEZdv#L1H8z^x8?(TleIk>g)RqK0VQ|Mwn6X+ -txo3vSYd;;z)HQ~0$c*&W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p#kc042rNlD$O59e#ogQsB77jP -l+h5j^*S;D0000000030|Nj600000IVs&n0Y-LwzbZ%vHb4hMwWq1Gz0^w#fkSBGhsMxw5 -cp3r9ndQi`YyI(VS@-_~yvW73<^y|^wLKbzE(ciwC3nrXLGTEzPUiqvVS}~6O1UXjT --wZT0^&Yy7N)`YB000000093000000000eiWpZt4ZeeUmZe(S6015)(W;Bo|b*QM=x*m8M0m_->$g*qw -@ori7{{y_p#kc0$idq_i6cBYN^7xEELu$lFU37Sf$J;ty5yrmOX|)6b;bt_DCv~W(*t#Bg8Uf0g<;b#Y -{qb&D_x}UD$i=tjlMuXsu{2tXFT+?;?hj39&>gq>HOrf1lB-q;n)I5N0000000000|Ns90000002u)>e -Q*>c-Xa)@kb7N>_ZDDj_015)(W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p#kb~^Qq$W5tE;F{pQrXd -&=l*`O?@#x{Qdy?T_k!`1dtE{N0|@+=y=Q>v|4>O&vPv+=S{uLVNP~VnF~b?WpjwG(swU)=eHZcWUx8U -##PM;a30K-=Jl8VtAf?Zi=Hx60000000000{{R300000025DwtV`Xyy3Ia!&5CG_S%pJ5^eKyZ?Ei30u -z06@wc21cKMGa+hh^{-zz<~n@;VY|KA!vt$qMEp^75#kD_Tqj3U9nGgWzc+4HNT75Rpb1f_9 -O})%vPIgY23q=iObBL}v#~MC<5IE1bzMOP@>#x3$o4Af`kVHyQ&~TYCSRqgV00000000300000000007 -XJu|>b7gY?3IgF~G>|8CsHoVw9(Wo7%9-WJvTObEZdv#L1H8z^x8|P+EJ-@Z0;0Ob-P{Wzd?2rs)M&&= -&l*}G;Jw22Ix+&`W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p#kc0{vgUTbnZZteO3IOg0+3WD-We)T -m9OC!w7#?l6>v|4>O&vPv+=S{uLVNP~VnF~b? -WpjwG2AHk4+Bm{3x%H=p>4!*u&nOG#EL&$!Mwbx|8CsHoVw9(Wo7%9-WJvTObEZdv#L1H8z^x8?(TleIk>g)RqK0VQ|M -wn6X+txo3vSYd;;z)HQ~0$c*&W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p#kc0*B=J<^fhb_$J_#H{ -vt~j#Am{KUpb)2xP;G^?36cB&0000000030|Ns900000AWq5RDZgXjGZgT(%0^w#fkSBGhsMxw5cp3r9 -ndQi`YyI(VS@-_~yvW73=9S3idLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#RB1GG>|8CsHoVw9(Wo7 -%9-WJvTObEZdv#L1H8z^x8}nE^3@L7b8}^L015)(W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p#kb~(Ygi@C#*klFTE}3hP#3Wm -ki}o*nL&Ed10e7tM;q}1N0|@+=y=Q>v|4>O&vPv+=S{uLVNP~VnF~b?WpjwGUNH8E>xBrIwS50cCx~Y4 ->vpbO6eBrP2Wxp8;c>|H0000000000|NsC0000003t@D0VPj}*Wo~qH015)(W;Bo|b*QM=x*m8M0m_-> -$g*qw@ori7{{y_p#kb~!aSf9!PV~dK2uo>;u!nFdemP_$e?^hl+JkM;eY!XR2mk;;0000000000|Ns90 -000000000000000|Nj60000003v*>-a%FT=WnpY{00{!&W;Bo|b*QM=x*m8M0m_->$g*qw@ori7{{y_p -#kb~gq>HOrf1lB-q; +n)I5N0000000000|Ns90000004sUgIaBpdDbWd<^b#!w83IcemVH%#u=VlnfZ>Nv}LGS$+_c7XW{%HY1 +pI1#pg(uNx7rjFg@b(FW?*48~9t#5lC;3juy9JUg#K|!ymZ|^=0(h%o8lK4KW*EY6r;q_b@BJ6|G1_td +X#ql?S4~8PCzBAofUz`Mi!Z}iQtl5;XwV(E`Zdd&WRj~^37YhpmjD0&000000RR90000000000000000 +0RR900000001!=OZ9{KvbaG*1bW?O;bY%ty2yNv}LGS$+_c7XW{%HY1 +pI1#pg(s9!)7t~9tEf?*r}jS36zkMYeK9}${s8)2BzjZ?kPr%EZ*FvQVPkYjWCD1rVH%#u=VlnfZ>Nv} +LGS$+_c7XW{%HY1pI1#pg(sf~EJ-@Z0;0Ob-P{Wzd?2rs)M&&=&l*}G;Jw22Ix+@lY;R&=Yyb)Zc&lL= +p2+8B7{YI-kO4vO{TKH!+HwAA0YaZwO+%=^r?uHX1d())f-38e*R52vTIsgCw000000RI300000000wetXJ~YD00{zF^HC<_z66c# +z3p#QTtc!25BiQYK^v%;q31~4|LX1ZsMp|!ND`2%gc_Nxrh2qVwA%Us#V;Pkm;mDO$Szy}0000000030 +|Ns9000009W_507X<}?;a{vhfS@TgQ$bhcTl`&GYj0000000000|NsC0000001Y}`!VE_pNS@TgQpC}=SbZD>g{Q1%8{!~UIganLWV?BTpVMu5IA6dE0Lj! +YuMq;@!bFb0000000960|Nj60000h6Wo<`nZ(?C=Q*>c;Wd;HTYi@6MZU71bS@TgQ00Rh3Wo=1rWMy~;1r2X-LUnFrY-LGqWMy~&3IcemVH%#u=VlnfZ>Nv}LGS$+_c7XW{%HY1 +pI1#pg(sEB=6W7=VqesjRYGc!>wZFzp>JB4@xD;^wu&SY_r(Hut6>_R$meDl!f&UL0YUHm7xyvRasFum +LZ4SnM1>~Nv}LGS$+_c7XW{%HY1pI1#pg(m}hleIk>g)RqK0VQ|Mwn6X+ +txo3vSYd;;z)HQ~0$c)kt6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?1x2rNlD$O59e#ogQsB77jP +l+h5j^*S;D0000000030|Nj600000IVs&n0Y-LwzbZ%vHb4hMwWq1Gz0(h%o8lK4KW*EY6 +r;q_b@BJ6|G1_tdX#ql?S4~8PCj)zvwLKbzE(ciwC3nrXLGTEzPUiqvVS}~6O1UXjT +-wZT0^&Yy7N)`YB000000093000000000eiWpZt4ZeeUmZe(S6015(lt6>_R$meDl!f&UL0YUHm7xyvR +asFumLZ4SnM1?2Yidq_i6cBYN^7xEELu$lFU37Sf$J;ty5yrmOX|)6bc&lL=p2+8B7{YI-kO4vO{TKH! ++HwAA0YaZwO+gq>HOrf1lB-q;n)I5N0000000000|Ns90000002u)>e +Q*>c-Xa)@kb7N>_ZDDj_015(lt6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?1mQq$W5tE;F{pQrXd +&=l*`O?@#x{Qdy?T_k!`1dtE{S@TgQpC}=SbZD>g_wqz<~n@;VY|KA!vt$qMEp^75#kD_Tqj3UR^HC<_z66c#z3p#QTtc!2 +5BiQYK^v%;q31~4|LW~I#~MC<5IE1bzMOP@>#x3$o4Af`kVHyQ&~TYCSRqgV00000000300000000007 +XJu|>b7gY?3IcemVH%#u=VlnfZ>Nv}LGS$+_c7XW{%HY1pI1#pg(sf~EJ-@Z0;0Ob-P{Wzd?2rs)M&&= +&l*}G;Jw22Ix+%yt6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?2pvgUTbnZZteO3IOg0+3WD-We)T +m9OC!w7#?l6>4!*u&nOG#EL&$!MwbxNv}LGS$+_c7XW{%HY1pI1#pg(m}hleIk>g)RqK0VQ|M +wn6X+txo3vSYd;;z)HQ~0$c)kt6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?2dB=J<^fhb_$J_#H{ +vt~j#Am{KUpb)2xP;G^?36cB&0000000030|Ns900000AWq5RDZgXjGZgT(%0(h%o8lK4KW*EY6r;q_b +@BJ6|G1_tdX#ql?S4~8PCzZ(NdLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#R7P%VH%#u=VlnfZ>Nv} +LGS$+_c7XW{%HY1pI1#pg(t%S^3@L7b8}^L015(lt6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4SnM1?1bYgi@C#*klFTE}3hP#3Wm +ki}o*nL&Ed10e7tM;q}1S@TgQxBrIwS50cCx~Y4 +>vpbO6eBrP2Wxp8;c>|H0000000000|NsC0000003t@D0VPj}*Wo~qH015(lt6>_R$meDl!f&UL0YUHm +7xyvRasFumLZ4SnM1?1WaSf9!PV~dK2uo>;u!nFdemP_$e?^hl+JkM;eY!XR2mk;;0000000000|Ns90 +000000000000000|Nj60000003v*>-a%FT=WnpY{00{zkt6>_R$meDl!f&UL0YUHm7xyvRasFumLZ4Sn +M1?1hyTa&4noi_R;$3lnz4{Zl)X|Z&ZIQtMA_g1big7gn0000000030|Nj600000Aba`-PQ+acAWo-gQ >Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HLtfv$so3kRF1PV2}fOp_vjQ6FdFHId|pC}=SbZD>g}T7S=7<6%^jtx5=^cXz--x^ 3Rg~O2_Ny!Q1}E;1fT!_000000096000000000DRX<~B#3IbwqHGd)HR2XhQO_4{AcS-HH^7AVzASV -8M4NYxyCjU1gEwF5PXV6FZDLo1#Vec_~kix7WfVQ#Sd|CM9$^_0000000030{{R3000004b7^OD015&} -nGgWzc+4HNT75Rpb1f_9O})%vPIgY23q=iObBM0u)D=(>(T2L(qY0=?N -N0|@+=y=Q>v|4>O&vPv+=S{uLVNP~VnF~b?WpjwGh8PemXlG!~;@e)_O3H?xO^a~KWeI~0jp}x-Dk@(^ -0000000000|Nj60000002u)>eQ*>c;Wd;HXcWHEPWpi_7a{vkg;bt_DCv~W(*t#Bg8Uf0g<;b#Y{qb&D -_x}UD$i=tjiECIT&Bl;lSX#$ms8AQN7m&qYSmvW>`pkpKw6W -3FpXTpREybp!N$Rniq>g8B7tjqC|5&qz6Q-tazCB3Um~mr!r)9aR2}S000000RR90{{R30010DnZgg^C -V{~%>3IgF~G>|8CsHoVw9(Wo7%9-WJvTObEZdv#L1H8z^x8|P+EJ-@Z0;0Ob-P{Wzd?2rs)M&&=&l*}G +8M4NYxyCjU1gEwF5PXV6FZDLo1#Vec_~kix7WfVQ#Sd|CM9$^_0000000030{{R3000004b7^OD015(G +^HC<_z66c#z3p#QTtc!25BiQYK^v%;q31~4|LX1H)D=(>(T2L(qY0=?N +S@TgQeQ*>c;Wd;HXcWHEPWpi_7a{vkgc&lL=p2+8B7{YI-kO4vO{TKH!+HwAA +0YaZwO+g8B7tjqC|5&qz6Q-tazCB3Um~mr!r)9aR2}S000000RR90{{R30010DnZgg^C +V{~%>3IcemVH%#u=VlnfZ>Nv}LGS$+_c7XW{%HY1pI1#pg(sf~EJ-@Z0;0Ob-P{Wzd?2rs)M&&=&l*}G ;Jw22Ix+z`)z@swRHXkt2Z-GcP&70000000030000000000 -----END STRICT TYPE LIB----- diff --git a/stl/RGBStorage@0.11.0.stl b/stl/RGBStorage@0.11.0.stl index bd0dcf25..5f1efbd6 100644 Binary files a/stl/RGBStorage@0.11.0.stl and b/stl/RGBStorage@0.11.0.stl differ diff --git a/stl/RGBStorage@0.11.0.sty b/stl/RGBStorage@0.11.0.sty index 340db4ce..c095960b 100644 --- a/stl/RGBStorage@0.11.0.sty +++ b/stl/RGBStorage@0.11.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:Srtqau4!-KXSB1G8-CSroocF-8N2oTi4-L5c2IQk-y$OJQz0#jeep-freedom-student + Id: stl:WDzyU4h6-vYKDkSa-2BfqXDg-d$LZbmr-oQgDi!z-rINtGDY#nerve-patrol-special Name: RGBStorage Version: 0.11.0 Description: RGB storage library @@ -11,6 +11,10 @@ @context typelib RGBStorage +import RGBLogic#memphis-martin-jump + use WitnessPos#snow-local-tonight + use WitnessOrd#exhibit-erosion-dallas + import StrictTypes#century-comrade-chess use VariantName#theory-austin-before use FieldName#present-flute-herman @@ -28,7 +32,7 @@ import StrictTypes#century-comrade-chess use UnionVariantsSemId#santana-address-pepper use TypeSystem#adrian-boris-sponsor -import RGBStd#forget-radar-macro +import RGBStd#paper-sunset-modular use GlobalOut#subway-virtual-verbal use PubWitness#paper-visa-storm use ContentRef#polo-ramirez-parker @@ -72,10 +76,6 @@ import RGBStd#forget-radar-macro use ContentId#scarlet-portal-office use OutputAssignmentVoidState#mars-alabama-public -import RGBLogic#pioneer-gong-smoke - use WitnessPos#snow-local-tonight - use WitnessOrd#exhibit-erosion-dallas - import AluVM#congo-archive-folio use Lib#gate-biology-optimal use LibSite#ultra-grace-message @@ -84,33 +84,7 @@ import AluVM#congo-archive-folio use IsaSeg#size-shake-olga use LibSeg#lemon-philips-horse -import BPCore#garbo-radius-peru - use TapretNodePartner#roger-member-educate - use ExplicitSealTxid#nova-roger-campus - use TapretProof#marco-border-sample - use TapretPathProof#kiwi-mirror-paris - use AnchorMerkleBlockTapretProof#poem-serpent-broken - use Method#bali-boris-plasma - use TapretRightBranch#miracle-patriot-touch - use BlindSealTxPtr#fortune-iron-salmon - use OpretProof#good-village-flex - use AnchorMerkleBlockOpretProof#gentle-gate-page - use SecretSeal#dollar-iris-wizard - use BlindSealTxid#media-judge-anita - use TxPtr#italian-july-eddie - -import Std#ralph-blue-lucky - use AlphaCaps#picnic-soprano-aurora - use AsciiPrintable#ultra-sunset-format - use Bool#oxygen-complex-duet - use U5#orbit-graph-sonic - use AlphaNumDash#sponsor-snake-nice - use AlphaCapsNum#aladdin-zebra-marble - use AlphaNumLodash#percent-bingo-caesar - use AlphaCapsLodash#duet-hammer-labor - use AlphaSmallLodash#pioneer-eagle-spell - -import RGBCommit#miranda-blue-promise +import RGBCommit#pretend-carpet-caesar use ExtensionSchema#active-eddie-empty use BundleId#carmen-farmer-diesel use AttachState#lady-japan-fiesta @@ -182,7 +156,7 @@ import RGBCommit#miranda-blue-promise use RevealedData#olivia-copper-stamp use AssignRevealedValueBlindSealTxid#photo-jump-silicon -import CommitVerify#tennis-peace-olympic +import CommitVerify#miller-pancake-elastic use ProtocolId#shadow-eclipse-program use Message#druid-blitz-rover use MerkleHash#horse-popcorn-bundle @@ -193,6 +167,32 @@ import CommitVerify#tennis-peace-olympic use ReservedBytes4#young-goblin-academy use ReservedBytes8#rudolf-tape-adrian +import BPCore#totem-holiday-helena + use TapretNodePartner#roger-member-educate + use ExplicitSealTxid#nova-roger-campus + use TapretProof#marco-border-sample + use TapretPathProof#kiwi-mirror-paris + use AnchorMerkleBlockTapretProof#poem-serpent-broken + use Method#bali-boris-plasma + use TapretRightBranch#miracle-patriot-touch + use BlindSealTxPtr#fortune-iron-salmon + use OpretProof#good-village-flex + use AnchorMerkleBlockOpretProof#gentle-gate-page + use SecretSeal#dollar-iris-wizard + use BlindSealTxid#media-judge-anita + use TxPtr#italian-july-eddie + +import Std#ralph-blue-lucky + use AlphaCaps#picnic-soprano-aurora + use AsciiPrintable#ultra-sunset-format + use Bool#oxygen-complex-duet + use U5#orbit-graph-sonic + use AlphaNumDash#sponsor-snake-nice + use AlphaCapsNum#aladdin-zebra-marble + use AlphaNumLodash#percent-bingo-caesar + use AlphaCapsLodash#duet-hammer-labor + use AlphaSmallLodash#pioneer-eagle-spell + import Bitcoin#signal-color-cipher use SeqNo#copper-verbal-ingrid use TxIn#slang-cherry-gizmo