bsv is a javascript library for Bitcoin SV (BSV) intended to satisfy certain
goals:
-
Support ease-of-use by being internally consistent. It should not be
necessary to read the source code of a class or function to know how to use it.
Once you know how to use part of the library, the other parts should feel
natural.
-
Have 100% test coverage, or nearly so, so that the library is known to be
reliable. This should include running standard test vectors from the reference
implementation.
-
Library objects have an interface suitable for use with a command-line
interface or other libraries and tools, in particular having toString,
fromString, toJSON, fromJSON, toBuffer, fromBuffer, toHex, fromHex methods.
-
All standard features of the blockchain are implemented (or will be) and
saved in lib/. All BIPs are correctly implemented and, where appropriate, saved
as bip-xx.js in lib/ (since that is their standard name). In order to allow
rapid development, Yours Bitcoin includes non-standard and experimental
features. Any non-standard features (such as colored coins or stealth
addresses) are labeled as such in index.js as well as in comments.
-
Expose everything, including dependencies. This makes it possible to develop
apps that require fine-grained control over the basics, such as big numbers and
points. However, it also means that you can hurt yourself if you misuse these
primitives.
-
Use standard javascript conventions wherever possible so that other
developers find the code easy to understand.
-
Minimize the use of dependencies so that all code can be easily audited.
-
All instance methods modify the state of the object and return the object,
unless there is a good reason to do something different. To access the result
of an instance method, you must access the object property(s) that it modifies.
-
Support web workers to unblock web wallet UIs when performing cryptography.