Skip to content

Latest commit

 

History

History
2226 lines (2000 loc) · 126 KB

CHANGELOG.md

File metadata and controls

2226 lines (2000 loc) · 126 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

The crates in this repository do not adhere to Semantic Versioning at this time.

[6.0.0]

Added

  • Add payment_id to PaymentRequest protobuf (#3341)
  • Add zeroize on drop to core account types (#3402)
  • Add light client verifier (#3390, #3399, #3397, #3411, #3412, #3401)
  • Add light client relayer (#3400)
  • Add RTH memos to mobilecoind (#3945)
  • Add scripts to scale down/up a dev environment (#3966)
  • Mobilecoind T3 support (#3960)
  • Allow ledger from archive to update a ledger database (#3976)

CI/CD

  • Add "Deploy Fog" manual actions (#3642, #3611, #3599)
  • Add GHA job to save ledger/watcher DB files to azure blob storage (#3349)
  • Add a download step to the ledger refresh (#3372)
  • Add rust version to workspace for enclaves (#3700)
  • Make minimum number of signatures for ledger bootstrap variable (#3946)
  • Bump go version in CD to 1.22.2 (#3958)
  • Make consensus node startupProbe configurable (#3977)
  • Alter consesensus start up for new from-archive and distribution pattern (#3981)

Fixed

  • Fix an error code returned by mobilecoind for bad b58 address (#3657)
  • Fix fog ingest load test (#3394)
  • Fix incremental builds always rebuilding on the second run (#3808)
  • Fix intermittent incremental build failures, move sim certificates to build directory (#3807)
  • Fix optimization tx's when using nonzero token ids (#3817)
  • Fix fog-view load test to report more useful metrics and actually work (#3357)
  • Missing punctuation in README (#3815)
  • Update refresh-ledger-bootstrap and dispatch-dev-testnet-fog workflows for smaller testnet (#3944)
  • Fix fog ledger shards needing to load all blocks (#3923, #3933)
  • Fix missing license call outs in crates (#3982)

CI/CD

  • Fix intermittent Postgres failures by using postgres service in GH actions (#3785)
  • Fix artifacts not uploading (#3971)
  • Fix dependent android bindings build (#3968)
  • Fix jaeger tracing sidecar config (#3979)

Security

Changed

CI/CD

  • Remove 4 core restriction on CI builds (#3798)
  • Remove nodejs from docker image (#3627)
  • Remove fog local network test (#3799)
  • Update ledger bootstrap to 5.0.8 (#3371, #3373, #3600)
  • Use gha-runner-scale-sets (#3849)
  • Update CI jobs to remove deprecated actions (#3965)
  • Annotation to keep autoscaler from evicting ingest (#3964)
  • Remove epid aesm services (#3978)

Github Actions

  • Bump actions/checkout from 3 to 4 (#3531, #3705)
  • Bump actions/download-artifact from 3 to 4 (#3806)
  • Bump actions/setup-go from 4 to 5 (#3778)
  • Bump actions/setup-node from 3 to 4 (#3648)
  • Bump actions/setup-python from 4 to 5 (#3779)
  • Bump docker/build-push-action from 4 to 5 (#3548)
  • Bump docker/login-action from 2 to 3 (#3552)
  • Bump docker/metadata-action from 4 to 5 (#3547)
  • Bump docker/setup-buildx-action from 2 to 3 (#3553)

Go Dependencies

  • Bump go grpc gateway (#3955)
  • Bump net from 0.21.0 to 0.24.0 (#3970)

Python Dependencies

Rust Dependencies

[5.2.3]

Fixed

  • Fixed mobilecoind returning a gRPC invalid argument error instead of a not found error when ledger data is not found (#3787)

Changed

Deployments

  • Add stack labels for service monitoring services (#3782)

[5.2.2]

Changed

  • Changed default for fog pubkey expiry from 100 to 10 (#3773)

Fixed

  • Fog ledger shard last known block info (#3771)

[5.2.1]

Changed

  • Made polling interval of fog ledger block fetching configurable (#3764)
  • Improved performance of fog ledger shard block fetching (#3765)

[5.2.0]

Added

  • A GetAllUnspentTxOuts API call to mobilecoind (#3752)
  • Added the ability for Fog ledger and Fog ingest to get ledger data from a mobilecoind instance (#3701, #3748)

Changed

  • Improve parallel processing of monitor in mobilecoind (#3673)
  • Improve performance of SCP network tests (#3713)
  • Improve performance of fog test client (#3737, #3727)

Deployments

  • Reduced fog ledger memory requests (#3754)
  • Fog ledger and ingest to use a network mobilecoind (#3753)
  • Refactored fog services chart (#3720, #3707)

Removed

  • Removed use of OMAP in fog ledger router and fog veiw router (#3718, #3721)

Fixed

Deployments

  • Fixed alpha dev [(#3703)]

[5.1.1]

Fixed

Deployments

  • fix port alignment for fog-ledger-router and grpc-gateway (#3687)

[5.1.0]

Changed

  • Fog ledger will now update the prometheus metrics periodically (#3649)

Deployments

  • Reworked fog ledger and fog view deployments (#3675, #3668, #3662)
  • Add support for multiple fog report instances (#3643)

Rust Dependencies

  • Bump grpcio from 0.12.1 to 0.13.0 (#3674)

[5.0.8]

Changed

  • Previously the application running the ledger enclave would perform a periodic check to see if the ledger enclave was in a good state. Now all enclave runners will panic if an enclave call comes back with a fatal SGX error. (#3526)

Fixed

Deployments

  • fix: shardOverlap (#3545)

Removed

Deployments

  • removed backing up of ledger database (#3558)

[5.0.7]

Added

  • Healthcheck to fog ledger enclave (#3533)

Fixed

Deployments

  • fix: update shard values and defaults (#3520)
  • fix: lmdb bootstrap uses same volume for download and destination (#3526)
  • fix: startup probe uses 300 attempts to compensate for lmdb download times (#3525)

[5.0.6]

Fixed

  • fix: admin server for fog view & ledger routers should expose metrics ([#3486])

Added

  • feat: additional metrics for fog view & ledger routers and stores ([#3486])

[5.0.5]

Fixed

Deployments

  • fix: remove client-auth-token from store configs ([#3387])
  • feat: (helm) add ingress switch to fog-services for blue/green style deployments. ([#3389])

[5.0.4]

Fixed

CI/CD

  • Helm: init containers, add startupprobes ([#3383])
  • Removed block-v2 tests (commit bb15dc)
  • Removed bv2 bootstrap (commit 1a9de0)

[5.0.3]

Fixed

CI/CD

  • Ledger and watcher database restore in CD pipeline (#3379)

[5.0.2]

Added

  • Add block signatures to mobilecoind-json block response (#3366)

[5.0.1]

Fixed

  • GPG key used in CD pipeline (#3361)

[5.0.0]

Added

  • The json slam report now contains the average slam rate (#3080)
  • Build time error messages will now be output for invalid SGX_MODE and IAS_MODE environment variables (#3164)
  • Added a new crate mc-attest-verifier-config crate which can be used to handle multiple enclave measurements and hardening advisories (#3148)
  • Add logic in consensus to drop clients that exceed a configurable number of failed tx proposals (#3208, #3155, #3156)
  • The AdminServer now allows passing of extra gRPC services (#3242)
  • MCIP 61: Add Defragmentation Memos (#3170)
  • The b58-decoder can now print public address hashes (#3283)
  • Fog view router supports sharding the fog storage. Provides a streaming and unary GRPC api. (#3297)
  • Fog ledger router supports sharding the key image storage. Provides a streaming and unary GRPC api. (#3312, (#3331)

Fixed

  • mobilecoind now produces SCIs with correct tx_out_global_indices values (#3311)
  • Enclave panic reporting to show the panic error (#3274)
  • mc-crypto-keys now includes mc-util-serial when serde feature is enabled (#3303)

Removed

  • Removed the prometheus push setting in local network development/testing script (#3124)
  • Removed the mc-crypto-dalek crate (#3282)

Security

  • Update Intel SGX SDK to 2.19.100.3 (#3252)

Changed

  • mobilecoind now has its own version of the LastBlockInfo proto message. (#3307)
  • mobilecoind now exposes the chain-id of the chain it is connected to via rpc (#3313)
  • Metrics are now prefixed with the service names (#2908, #3322)
  • Use "unknown" for GIT_COMMIT failures in logging output (#3117)
  • Update MSRV to 1.68.0 (#3122)
  • Unfork opentelmetry, use reqwest backend. Also removes use of openssl-sys (#3154)
  • Expose SchnorrkelError from mc-crypto-keys (#3261)
  • mc-crypto-rand has been renamed to mc-rand and published as a separate crate (#3291)
  • Reduce the number of info log messages from watcher DB (#3301, #3328)
  • mobilecoind will now retry if a transaction fails (#3308)

Github Actions

  • Bump actions/setup-go from 3 to 4 (#3251)
  • Bump docker/build-push-action from 3 to 4 (#3076)

Python Dependencies

  • Bump certifi from 2021.10.8 to 2022.12.7 in /mobilecoind/strategies (#2938)
  • Bump ipython from 7.16.3 to 8.10.0 in /mobilecoind/strategies (#3120)
  • Bump werkzeug from 1.0.1 to 2.2.3 in /consensus/scp/viewer ([#3143])

Rust Dependencies

  • Update rust-toolchain version to newer nightly "2023-01-22" (#2999, #3323)
  • Bump aes-gcm from 0.9.4 to 0.10.1 (#2806)
  • Bump anyhow from 1.0.66 to 1.0.69 (#3002, #3108)
  • Bump assert_cmd from 2.0.7 to 2.0.10 (#3065, #3277)
  • Bump backtrace from 0.3.66 to 0.3.67 (#3064)
  • Bump base64 from 0.13.1 to 0.21.0 (#3003)
  • Bump bitflags from 1.2.1 to 2.0.1 (#3109, #3250)
  • Bump blake2 from 0.10.4 to 0.10.6 (#2859, #2991)
  • Bump bumpalo from 3.2.1 to 3.12.0 (#3042, #3039, #3040, #3041, #3038)
  • Bump cargo_metadata from 0.15.1 to 0.15.3 (#3106)
  • Bump cc from 1.0.74 to 1.0.79 (#2957, #2958, #2959, #2960, #2961, #3087, #3090, #3067, #3068, #3091)
  • Bump chrono from 0.4.23 to 0.4.24 (#3229)
  • Bump clap from 4.0.29 to 4.1.11 (#2980, #3139, #3187, #3265)
  • Bump cookie from 0.16.1 to 0.17.0 (#3086)
  • Bump crc from 3.0.0 to 3.0.1 in /fog/view/enclave/trusted (#3069)
  • Bump crossbeam-channel from 0.5.6 to 0.5.7 (#3186)
  • Bump digest from 0.10.5 to 0.10.6 (#3006, #3010, #2937 , #3052)
  • Bump fs_extra from 1.2.0 to 1.3.0 (#3104)
  • Bump futures from 0.3.25 to 0.3.28 (#3075, #3300)
  • Bump grpcio from 0.11.0 to 0.12.1 (#2826, #3134)
  • Bump hashbrown from 0.13.1 to 0.13.2 in /consensus/enclave/trusted (#3094)
  • Bump libc from 0.2.137 to 0.2.140 (#3014, #3218)
  • Bump link-cplusplus from 1.0.7 to 1.0.8 (#3013)
  • Bump mc-oblivious-map from 2.2 to 2.3 (#3290)
  • Bump mc-oblivious-ram from 2.2 to 2.3 (#3290)
  • Bump mc-oblivious-traits from 2.2 to 2.3 (#3290)
  • Bump num_cpus from 1.14.0 to 1.15.0 (#3098)
  • Bump once_cell from 1.16.0 to 1.17.1 (#3057, #3135, #3137)
  • Bump pem from 1.1.0 to 2.0.0 (#3021, #3045, #3268)
  • Bump predicates from 2.1.1 to 3.0.1 (#2915, #2996, #3266)
  • Bump proc-macro2 from 1.0.47 to 1.0.51 (#3015, #3073, #3103)
  • Bump proptest from 1.0.0 to 1.1.0 (#3113)
  • Bump prost from 0.11.2 to 0.11.8 (#3004, #3012, #3027, #3099, #3046, #3165, #3173)
  • Bump quote from 1.0.21 to 1.0.26 (#2982, #3231)
  • Bump rayon from 1.5.3 to 1.7.1 (#3025, #3196, #3055)
  • Bump reqwest from 0.11.12 to 0.11.14 (#2990, #3089)
  • Bump semver from 1.0.14 to 1.0.17 (#3026, #3255)
  • Bump sentry from 0.29.1 to 0.30.0 (#3054, #3116, #3167)
  • Bump serde_json from 1.0.87 to 1.0.94 (#3023, #3115, #3199)
  • Bump serde_with from 2.0.1 to 2.3.1 (#3053, #3222)
  • Bump serde from 1.0.147 to 1.0.159 (#3024, #3011, #3009, #3028, #3066, #3213, #3294)
  • Bump serial_test from 0.9.0 to 1.0.0 (#2989, #3074)
  • Bump signal-hook from 0.3.14 to 0.3.15 (#3133)
  • Bump signature from 1.6.4 to 2.0.0 (#3299)
  • Bump syn from 1.0.107 to 2.0.11 (#3166, #3295)
  • Bump tempfile from 3.3.0 to 3.4.0 (#3184)
  • Bump toml from 0.5.9 to 0.7.3 (#3093, #3112, #3249)
  • Bump tokio from 1.16.1 to 1.25.0 (#3278)
  • Bump walkdir from 2.3.2 to 2.3.3 (#3256)
  • Bump wasm-bindgen-test from 0.3.33 to 0.3.34 (#3105)
  • Bump wasm-bindgen from 0.2.83 to 0.2.84 (#3088)
  • Remove slog-gelf (#3278)
  • Update mbedtls, mbedtls-sys forks to support newer rust nightlies, use newer heapless (#2962, #3206)
  • Update to curve25519-dalek-4.0.0-rc.1 (#3193)
  • Update from forked diesel to 2.0.3 (#3304)

[4.1.0]

Added

  • mobilecoind now supports generating SCI transactions (#3212, #3214, #3232)
  • mobilecoind-dev-faucet --activate now auto-activates the faucet on startup (#3062)
  • mc-transaction-signer crate to define types for view-only accounts and offline signing (#2926)

Changed

  • mobilecoind-json now always includes the MaskedAmount version in its responses (#3036)
  • Replace tempdir with tempfile (#3211)
  • Libraries used by client SDKs are now licensed under the Apache-2.0 license (servers remain GPLv3) (#3092)
  • Restore ability to read the port a gRPC server is listening on (#3107)

Fixed

  • Fog view will no longer claim it's ready before ORAM is loaded (#3149)

[4.0.2]

Fixed

  • fix(charts): fix blocklist activation logic (#3048)

[4.0.1]

Added

  • Make the local network script support a dense3 network option (#2988)
  • HAProxy Ingress Blocklists (#2952)

Changed

  • Improved performance of mobilecoind-dev-faucet for better load testing (#2955)

[4.0.0]

Added

  • MCIP 42: Partial-fill rules for signed contingent input transactions
  • MCIP 43: Consensus nodes will now sign and publish metadata about blocks
  • MCIP 54: Transaction builder support for TxO memo fields for payment intent and request IDs
  • MCIP 55: Nested multi-sig for minting transactions
  • Services can now output JSON-formatted messages to stdout/stderr
  • mc-consensus-mint-client now supports --tombstone-from-node [mc://URI] to set the tombstone block automatically
  • mc-consensus-mint-client now supports MintConfigTx parameters from JSON files

Changed

  • MCIP 52: Transactions now sign a TxSummary instead of the previous TxPrefix, to aid with hardware wallet confirmations
  • MCIP 53: Extend the MintTx to allow direct minting to fog-enabled addresses
  • MCIP 57: Relax some constraints around ring signature contents in SCI transactions

Github Actions

  • Bump actions/checkout from 2 to 3 (#2113)
  • Bump actions/setup-python from 3 to 4 (#2114)
  • Bump docker/build-push-action from 2 to 3 (#2425)
  • Bump docker/login-action from 1 to 2 (#2428)
  • Bump docker/metadata-action from 3 to 4 (#2426)
  • Bump docker/setup-buildx-action from 1 to 2 (#2427)

Python Dependencies

  • Bump protobuf from 3.19.4 to 3.19.5 in /mobilecoind/strategies (#2602)

Rust Dependencies

Removed

Security

  • MCIP 56: Make the enclave enforce unique nonces per-token (improved fix for TOB-MCCT-4).
  • TOB-MCCT-5: Reject transactions where the client's fee map differs from the consensus enclave's.
  • Update SGX SDK to 2.18.

[3.0.0]

Added

  • Add Chain-ID gRPC metadata (MCIP #49) to provide additional runtime disambiguation between clients and servers.
  • Add a required --chain-id command-line arguments to consensus and fog servers.
  • Add an optional --chain-id command-line argument to mobilecoind.
  • Support using environment variables to set values for nearly all command-line arguments.
  • Update CI deployments to use zerossl instead of letsencrypt.
  • Add a --hash-tx-file subcommand to print the hash of a mint-tx or mint-config-tx file.
  • Add the current block info (fee map, block version, etc.) to the response message for mobilecoind_api.GetNetworkStatus.
  • Make Jaeger telemetry opt-in using MC_TELEMETRY=1.
  • Add a --block-query-batch-size parameter to fog-view. This makes fog-view load more data at once from postgres, and helps it to start up faster even if there is high network latency in the connection to postgres. This defaults to 1000 now, where previous behavior corresponds to a value of 1.

Fixes

  • Update mc-consensus-mint-client to check that public addresses for minting targets do not have a configured fog server.
  • Update to android-bindings and libmobilecoin RNG APIs to assist in idempotent transactions.

Security

  • TOB-MCCT-4: Make minting nonces unique per-token.
  • Build with SGX SDK 2.17.1 to mitigate and account for INTEL-SA-00657.

[2.0.0] - 2022-07-25

Fixed

CI/CD

  • Fix metadata script for new release branch patterns. ([#2298])

Security

  • Bump SGX to 2.17, mitigate INTEL-SA-00615

[1.2.2] - 2022-06-17

Changed

  • Updated SGX to 2.16

Rust Dependencies

[1.2.1] - UNRELEASED

Changed

  • Expose the ability to get a TX shared secret to iOS SDK
  • Restore the ability to derive an account from legacy root entropy to iOS SDK
  • Improve the construction of Amount objects from Android SDK

Fixed

  • Fix panic when consensus service is configured for multiple tokens but still running in MOB-only block-version 0 mode.

[1.2.0] - UNRELEASED

Added

  • Fog is now part of this repository
  • Fog Ledger key image checks are now oblivious (fog #101)
  • Fog View OMAP size configurable via environment
  • Fog Overseer utility for monitoring Fog Ingest instances
  • Fog Ingest Client CLI now allows queries to the get_ingress_key_record API
  • Block versioning / protocol evolution (MCIP #26)
  • In Block Version 1 (to be enabled along with block version 2):
    • Required Transaction Memos (MCIP #3)
    • Recoverable Transaction History (MCIP #4)
  • In Block Version 2 (to be enabled after network has been upgraded):
    • Confidential Multi-Token Support (MCIP #25)
    • Minting support for non-MOB tokens (MCIP #37)
    • Verifiable burning for any token (MCIP #35)
    • Standardized Addresses for common purposes (MCIP #36)
  • In Block Version 3 (will be enabled in a future release):
    • Require TxOuts to be sorted in TxProposal (MCIP #34).

Changed

  • Enable Bitcode for libmobilecoin, reduce mobile artifact size by ~25% (#1124)
  • mobilecoind will now exit on startup when a ledger migration is necessary, unless the new --ledger-db-migrate command line argument is used, in which case it will migrate automatically. This flag does not do anything if the Ledger DB does not exist.
  • Bump SGX versions to 2.16. (#1101, #2018)
  • Increase the maximum tombstone block for transactions to 20,160 from 100.
  • Lock enclave no-debug mode when building for IAS production.
  • Update Rust toolchain to nightly-2021-07-21.

Python

  • Bump ipython from 7.8.0 to 7.16.3 (#1333)
  • Bump protobuf from 3.10.0 to 3.15.0 (#1477)

Rust Dependencies

Removed

  • The slam test utility, in favor of fog-distribution (#1611)
  • Support for root entropy-based key derivation in test keys/ledgers (#1893)
  • The pretty_assertions dependency (#1055, #1078, #1431, #1610, #1657)

Fixed

  • Fog ingest state file handling is more resilient (#1358)
  • Fog services sometimes returned the wrong grpc error code for attestation failures
  • Added retries for connectivity issues with Postgres database in Fog services

Security

  • Fixed a problem with data authentication in the Fog OCALL Oram Storage interface (Thanks to [@AmbitionXiang] for reporting!, #1576)

[1.1.1] - 2021-08-16

Changed

  • Updated TOS.
  • Update IP restriction handling in mobilecoind to match TOS.

[1.1.0] - 2021-06-08

Added

  • Mnemonics-based Key Derivation
  • Dynamic Fees rfcs/#1
    • consensus-service now takes --minimum-fee=<picoMOB> to configure minimum fees (nodes with different fees cannot attest to each other).
    • mobilecoind's GenerateOptimizationTxRequest API to takes a user-supplied fee.
  • Authenticated fog details in public addresses
  • Admin gRPC for mobilecoind.
  • mc-slam load generation utility.
  • mc-sgx-css-dump SIGSTRUCT (CSS) debug utility.
  • mobilecoind can send change to a designated subaddress.
  • mobilecoind support for load balancing (via forked grpcio).
  • mobilecoind encrypts account key at rest.
  • watcher app to keep track of Attestation Verification Reports from live machines.

Changed

  • Bump ISV SVN for consensus enclave to 2
  • Reduce minimum fee from 10mMOB to 400uMOB
  • Parallelize HTTP transaction fetcher
  • Optionally seed RNGs for mock attestation signer from MC_SEED env.
  • Bump rust version to nightly-2021-03-25
  • Update SGX to 2.13.3.
  • Use AWS_REGION instead of ?region=.
  • Make enclave errors (to clients/peers) result in PERMISSION_DENIED to force reattestation.
  • Fog hints now use AES256-GCM

Rust Dependencies

  • Update anyhow to 1.0.39
  • Update arc-swap to 0.4.8
  • Update arrayvec to 0.5.2
  • Update backtrace to 0.3.55
  • Update base64 to 0.12.3
  • Update bigint to 4.4.3
  • Update blake2 to 0.9.1
  • Update cc to 1.0.66
  • Update cfg-if to 1.0.0
  • Update cookie to 0.14.3
  • Update crossbeam-channel to 0.5.0
  • Update curve25519-dalek to 4.0.0-pre.0
  • Update datatest to 0.6.4
  • Update displaydoc to 0.2.0
  • Update fs_extra to 1.2.0
  • Update futures to 0.3.8
  • Update hmac to 0.10.1
  • Update indicatif to 0.15.0
  • Update libc to 1.0.80
  • Update mockall to 0.8.3
  • Update once_cell to 1.5.2
  • Update pem to 0.8.2
  • Update proc-macro2 to 1.0.24
  • Update proptest to 0.10.1
  • Update protobuf to 2.22.1
  • Update rand_core to 0.6.2
  • Update rand_hc to 0.3.0
  • Update rand to 0.8.3
  • Update reqwest to 0.10.6
  • Update retry to 1.2.0
  • Update rocket to 0.4.6
  • Update semver to 0.11.0
  • Update serde_json to 1.0.60
  • Update serde to 1.0.118
  • Update serial_test to 0.5.0
  • Update sha2 to 0.9.3
  • Update slog-stdlog to 4.1.0
  • Update slog-term to 2.6.0
  • Update structopt to 0.3.21
  • Update syn to 1.0.45
  • Update tempfile to 3.2.0
  • Update thiserr to 1.0.24
  • Update toml to 0.5.7
  • Update unicode-normalization to 1.1.17
  • Update version_check to 0.9.3
  • Update x25519-dalek to 1.1.0
  • Update zeroize to 1.2.0

Upstream Forks

  • Unfork bulletproofs to unreleased 2.0.0 from github
  • Fork grpcio to a 0.6.0 fork that supports cookies
  • Fork aes-gcm 0.6.0 to support constant-time decrypt results

Python Dependencies

  • Update jinja to 2.11.3
  • Update pygments to 2.7.4

Fixed

  • Remove unnecessary limits on consensus request concurrency
  • Readme fixes (thanks to contributors @hiqua, @petertodd)
  • Fix monitor ID instability in mobilecoind.
  • Normalize fog URL in public addresses before lookup
  • Unified rustfmt

Security

  • Make encryption/decryption success able to be used from within a larger constant-time context for mc-crypto-box.
  • Stricter EPID Pseudonym length test. (IoActive MC-03)

[1.0.0] - 2020-11-24

Initial release.