Page MenuHomePhabricator

[Chronik] Add `alp::parse` to parse GENESIS, MINT, SEND and BURN
ClosedPublic

Authored by tobias_ruck on Dec 21 2023, 00:43.

Details

Summary

Parses a single ALP pushdata. The protocol encoding is simpler than SLP, so we can add the parsing in one diff.

ALP spec can be found here.

Test Plan

cargo test -p bitcoinsuite-slp

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

tobias_ruck updated this revision to Diff 43717.

add missing GenesisInfo::empty_alp

Tail of the build log:

    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
    Finished dev [unoptimized + debuginfo] target(s) in 4m 20s
[5/6] cd /work && /usr/bin/cmake -E env CARGO_TARGET_DIR="/work/abc-ci-builds/build-chronik/cargo/build" CARGO_BUILD_RUSTC="/root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/rustc" CARGO_BUILD_RUSTDOC="/root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/rustdoc" /root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/cargo --locked test --package bitcoinsuite-*
FAILED: chronik/CMakeFiles/check-crate-bitcoinsuite-test 
cd /work && /usr/bin/cmake -E env CARGO_TARGET_DIR="/work/abc-ci-builds/build-chronik/cargo/build" CARGO_BUILD_RUSTC="/root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/rustc" CARGO_BUILD_RUSTDOC="/root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/rustdoc" /root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/cargo --locked test --package bitcoinsuite-*
warning: some crates are on edition 2021 which defaults to `resolver = "2"`, but virtual workspaces default to `resolver = "1"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
   Compiling either v1.9.0
   Compiling serde v1.0.185
   Compiling itertools v0.10.5
   Compiling bytes v1.4.0
   Compiling bitcoinsuite-core v0.1.0 (/work/chronik/bitcoinsuite-core)
   Compiling bitcoinsuite-slp v0.1.0 (/work/chronik/bitcoinsuite-slp)
error[E0599]: no function or associated item named `empty_alp` found for struct `GenesisInfo` in the current scope
   --> chronik/bitcoinsuite-slp/tests/test_alp_parse_genesis.rs:119:36
    |
119 |                 info: GenesisInfo::empty_alp(),
    |                                    ^^^^^^^^^ function or associated item not found in `GenesisInfo`

error[E0599]: no function or associated item named `empty_alp` found for struct `GenesisInfo` in the current scope
   --> chronik/bitcoinsuite-slp/tests/test_alp_parse_genesis.rs:245:40
    |
245 |                     info: GenesisInfo::empty_alp(),
    |                                        ^^^^^^^^^ function or associated item not found in `GenesisInfo`

error[E0599]: no function or associated item named `empty_alp` found for struct `GenesisInfo` in the current scope
   --> chronik/bitcoinsuite-slp/tests/test_alp_parse_genesis.rs:267:40
    |
267 |                     info: GenesisInfo::empty_alp(),
    |                                        ^^^^^^^^^ function or associated item not found in `GenesisInfo`

For more information about this error, try `rustc --explain E0599`.
error: could not compile `bitcoinsuite-slp` (test "test_alp_parse_genesis") due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
[6/6] cd /work && /usr/bin/cmake -E env CARGO_TARGET_DIR="/work/abc-ci-builds/build-chronik/cargo/build" CARGO_BUILD_RUSTC="/root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/rustc" CARGO_BUILD_RUSTDOC="/root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/rustdoc" /root/.rustup/toolchains/1.72.0-x86_64-unknown-linux-gnu/bin/cargo --locked clippy --package abc-rust-* -- -D warnings
warning: some crates are on edition 2021 which defaults to `resolver = "2"`, but virtual workspaces default to `resolver = "1"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
   Compiling libc v0.2.147
    Checking memchr v2.5.0
    Checking bytes v1.4.0
    Checking object v0.31.1
    Checking http v0.2.9
   Compiling cc v1.0.83
   Compiling backtrace v0.3.68
    Checking stable-eyre v0.2.2
    Checking abc-rust-error v0.1.0 (/work/chronik/abc-rust-error)
    Finished dev [unoptimized + debuginfo] target(s) in 4m 26s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1
This revision is now accepted and ready to land.Dec 21 2023, 11:41