Purpose & Design Goals
Libauth is designed to be flexible, lightweight, and easily auditable. Rather than providing a single, overarching, object-oriented API, all functionality is composed from simple functions. This has several benefits:
- Flexibility — Even highly-complex functionality is built-up from simpler functions. These lower-level functions can be used to experiment, tweak, and remix your own higher-level methods without maintaining a fork of the library.
- Smaller application bundles — Applications can import only the methods they need, eliminating the unused code (via dead-code elimination).
- Better auditability — Beyond having no dependencies of its own, Libauth’s functional programming approach makes auditing critical code easier: smaller bundles, smaller functions, and less churn between versions (fewer cascading changes to object-oriented interfaces).
Why the name?
Libauth is a library for working with Bitcoin and Bitcoin Cash authentication.
The library provides extensive tooling and support for creating transactions, modeling bitcoin virtual machine versions, and inspecting the evaluation of transactions (e.g. Bitauth IDE’s live-updating omniscient debugger).
While this authentication infrastructure is important for developing wallet applications, it’s also useful for generalized identity and authentication applications. The new name, Libauth, better indicates this wider focus.
The Libauth API reference is now available at
libauth.org. As more of the library is stabilized, introductory documentation and guides will also appear at this new domain.
This release primarily adds support for several new features in the Libauth compiler. It also includes breaking changes to some experimental APIs for virtual machine evaluation and transaction encoding/decoding. See the Changelog for details.