Skip to content

Commit

Permalink
Release v0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
dr-orlovsky committed Oct 21, 2020
1 parent 5efc204 commit 108e0fb
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 23 deletions.
87 changes: 71 additions & 16 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,71 @@ Change Log
v0.1.0
------

### Breaking changes:
### Library overview
- **Paradigms**: generic APIs for L1/L3 best practices
* **Client-side validation**
* **Single-use-seals**
* **Strict encoding**
- **Bitcoin protocol**: extensions to `bitcoin` crate and L2/L3 APIs
* **Deterministic bitcoin commitments** (DBC) based on LNPBP1-4 standard
* **Tagged hashes**: additional procedures for working with Tapproot-style
tagged hashes
* **Short bitcoin identifiers** based on LNPBP-4 standard
* **Resolver API** for requesting transaction graph using providers (like
Bitcoin Core RPC, Electrum Server API etc)
* **Chains**, chain parameters and universal asset identifiers
* **Script types** for differentiating script cycle through different
transaction parts
* **Transaction-output-based single-use-seals**: bitcoin-specific
implementation of single-use-seals
- **RGB**: confidential smart-contract system for Bitcoin & Lightning Network
based on client-side validation paradigm (LNPBP11-13 standards)
* **Schema**: structure defining contract creation and evolution rules and
restrictions
* **Contracts**: data types for contract lifecycle
* **Scripting** with embedded procedures for fungible assets
*The library implements RGB Core v1 release candidate set of standards*
- **Lightning networking protocol**: generalized P2P and RPC networking APIs
based on the original Lightning standard; early preview
* Universal P2P node ids supporting IPv4, IPv6, Onion v2 and v3 addresses and
public keys
* Feature vectors for defining and workinf with set of feature bits
* LNP networking with ZMQ sockets for RPC interfaces

### Major changes since RC2
- Support for Rust stable and MSRV reduction to 1.41.1
- Custom forks for upstream bitcoin-related dependencies are changed onto the
latest publicly-released versions

### Breaking changes since RC2
- Updated taproot-based hashed tag system (BIP-340) according to the most
recent specs.
- RGB `Amount` renamed into `AtomicValue`
- RGB `amount` mod renamed into `value`
- RGB seal definitions and related structures are now `Copy` and returned by
value

### Other changes:

v0.1.0-rc.2
-----------

### Breaking changes:
- Changed embedded procedure names for RGB VM
- Removed requirement for PSBT to contain fee key in RGB anchor creation (it needs to be a properly constructed PSBT with `witness_utxo`/`non_witness_utxo` data)
- Removed requirement for PSBT to contain fee key in RGB anchor creation (it
needs to be a properly constructed PSBT with `witness_utxo`/`non_witness_utxo`
data)

### Other changes:
- Schema serialization
- More embedded procedures for RGB VM
- Serde serialization for all RGB structures
- Schema serde serialization (YAML, JSON etc)
- Serde serialization for all RGB contract structures
- Strict encoding and decoding of Curve25519 public keys and Ed25519 signatures
- Implementation of Curve25519 public keys and Ed25519 signatures as RGB state and metadata
- Implementation of Curve25519 public keys and Ed25519 signatures as RGB state
and metadata
- Bech types for Pedersen commitments, Bulletproofs, Curve25519 data
- Tweaking factor is added into PSBT information during anchor creation
- Added bitcoin protocol resolvers API


v0.1.0-rc.1
-----------
Expand All @@ -46,13 +88,17 @@ v0.1.0-rc.1
- Test coverage >70%
- Code docs >50%


v0.1.0-beta.4
-------------

### Breaking changes:
- Updated upstream crates (bitcoin, bitcoin_hashes, secp256k1, grin_secp256k1zpk, miniscript, lightning) with many PRs merged
- EmbedCommitVerify now can mutate container data (used for returning tweaking factors)
- Upgrading `rand` version to the most recent one (blocked previously by grin_secp256k1zpk dependency)
- Updated upstream crates (bitcoin, bitcoin_hashes, secp256k1,
grin_secp256k1zpk, miniscript, lightning) with many PRs merged
- EmbedCommitVerify now can mutate container data (used for returning tweaking
factors)
- Upgrading `rand` version to the most recent one (blocked previously by
grin_secp256k1zpk dependency)
- Changied txout seals to use u32 vouts instead of u16
- Changed txout blinding factor to be u64 instead of u32

Expand All @@ -67,7 +113,8 @@ v0.1.0-beta.3

### Breaking changes
- Single-use-seals blinding factor changed from 32-bit to 64-bit of entropy
- Transaction output indexes in single-use-seal definitions are now 32-bit, as in Bitcoin Core / rust-bitcoin (previously were 16-bit)
- Transaction output indexes in single-use-seal definitions are now 32-bit, as
in Bitcoin Core / rust-bitcoin (previously were 16-bit)

### New features
- Initial Tor V2 address support
Expand All @@ -80,13 +127,21 @@ v0.1.0-beta.2
### Features overview
- Complete validation workflow with new Validator object
- Virtual machines for RGB contracts (interface + embedded VM)
- `Consignment` now has a version field, so in the future more space-saving variants can be created (like removing txid from anchors and using short universal bitcoin IDs when BP node adoption will increase)
- Anchor contains txid field; so validation can be performed with just Bitcoin Core (no Electrum or BP node is required). This also speeded up validation performance significantly.
- `Consignment` now has a version field, so in the future more space-saving
variants can be created (like removing txid from anchors and using short
universal bitcoin IDs when BP node adoption will increase)
- Anchor contains txid field; so validation can be performed with just Bitcoin
Core (no Electrum or BP node is required). This also speeded up validation
performance significantly.

### Breaking changes
- Change of `TransitionId` hash tag value (previously-generated transition ids will be invalid)
- Change of `GenesisId` hash tag value (previously-generated contract/assets ids will be invalid)
- Change of `TransitionId` hash tag value (previously-generated transition ids
will be invalid)
- Change of `GenesisId` hash tag value (previously-generated contract/assets
ids will be invalid)
- `TransitionId` type is replaced with `NodeId`
- `NodeId` and `ContractId` are now equal by value; `ContractId` is `NodeId` wrapper
- `ancestors()` method moved from `Transition` to `Node` trait; genesis returns an empty array
- `NodeId` and `ContractId` are now equal by value; `ContractId` is `NodeId`
wrapper
- `ancestors()` method moved from `Transition` to `Node` trait; genesis returns
an empty array
- Consignment endpoints contain `NodeId` information
17 changes: 14 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lnpbp"
version = "0.1.0-rc.2"
version = "0.1.0"
license = "MIT"
authors = ["Dr. Maxim Orlovsky <orlovsky@pandoracore.com>"]
description = "LNP/BP Core Library implementing LNPBP specifications & standards"
Expand All @@ -9,6 +9,7 @@ homepage = "https://github.com/LNP-BP"
keywords = ["bitcoin", "lightning", "lnp-bp", "layer-3", "cryptography"]
readme = "README.md"
edition = "2018"
exclude = [".github", "derive", "contrib"]

[lib]
name = "lnpbp"
Expand All @@ -35,7 +36,7 @@ crate-type = ["dylib", "rlib", "staticlib"]
# -----------------------------------------
amplify = { version = "~2.0.6", features = ["stringly_conversions"] }
amplify_derive = "~2.0.6"
lnpbp_derive = { path = "derive" }
lnpbp_derive = "~0.1.0"
# Dependencies on core rust-bitcoin ecosystem projects
# ----------------------------------------------------
bitcoin = { version = "~0.25.1", features = ["rand"] }
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
![Tests](https://github.com/LNP-BP/rust-lnpbp/workflows/Tests/badge.svg)
![Lints](https://github.com/LNP-BP/rust-lnpbp/workflows/Lints/badge.svg)
[![codecov](https://codecov.io/gh/LNP-BP/rust-lnpbp/branch/master/graph/badge.svg)](https://codecov.io/gh/LNP-BP/rust-lnpbp)

[![crates.io](https://meritbadge.herokuapp.com/lnpbp)](https://crates.io/crates/lnpbp)
[![Docs](https://docs.rs/lnpbp/badge.svg)](https://docs.rs/lnpbp)
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)

This is LNP/BP Core Library: a rust library implementing LNP/BP specifications
Expand Down Expand Up @@ -116,6 +120,8 @@ brew cargo

### Clone and compile library

Minimum supported rust compiler version (MSRV): 1.41.1

```shell script
git clone https://github.com/lnp-bp/rust-lnpbp
cd rust-lnpbp
Expand Down
4 changes: 2 additions & 2 deletions derive/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lnpbp_derive"
version = "0.1.0-rc.2"
version = "0.1.0"
license = "MIT"
authors = ["Dr. Maxim Orlovsky <orlovsky@pandoracore.com>"]
description = "LNP/BP Core Library derive macros"
Expand All @@ -16,7 +16,7 @@ proc-macro = true
[dependencies]
quote = "~1.0.7"
syn = "~1.0.31"
amplify = "~2.0.0"
amplify = "~2.0.6"

[dev-dependencies]
lnpbp = { path = ".." }

0 comments on commit 108e0fb

Please sign in to comment.