1 | # bsv
|
2 |
|
3 | bsv is a javascript library for Bitcoin SV (BSV) intended to satisfy certain
|
4 | goals:
|
5 |
|
6 | 1. Support ease-of-use by being internally consistent. It should not be
|
7 | necessary to read the source code of a class or function to know how to use it.
|
8 | Once you know how to use part of the library, the other parts should feel
|
9 | natural.
|
10 |
|
11 | 2. Have 100% test coverage, or nearly so, so that the library is known to be
|
12 | reliable. This should include running standard test vectors from the reference
|
13 | implementation.
|
14 |
|
15 | 3. Library objects have an interface suitable for use with a command-line
|
16 | interface or other libraries and tools, in particular having toString,
|
17 | fromString, toJSON, fromJSON, toBuffer, fromBuffer, toHex, fromHex methods.
|
18 |
|
19 | 4. All standard features of the blockchain are implemented (or will be) and
|
20 | saved in lib/. All BIPs are correctly implemented and, where appropriate, saved
|
21 | as bip-xx.js in lib/ (since that is their standard name). In order to allow
|
22 | rapid development, Yours Bitcoin includes non-standard and experimental
|
23 | features. Any non-standard features (such as colored coins or stealth
|
24 | addresses) are labeled as such in index.js as well as in comments.
|
25 |
|
26 | 5. Expose everything, including dependencies. This makes it possible to develop
|
27 | apps that require fine-grained control over the basics, such as big numbers and
|
28 | points. However, it also means that you can hurt yourself if you misuse these
|
29 | primitives.
|
30 |
|
31 | 6. Use standard javascript conventions wherever possible so that other
|
32 | developers find the code easy to understand.
|
33 |
|
34 | 7. Minimize the use of dependencies so that all code can be easily audited.
|
35 |
|
36 | 8. All instance methods modify the state of the object and return the object,
|
37 | unless there is a good reason to do something different. To access the result
|
38 | of an instance method, you must access the object property(s) that it modifies.
|
39 |
|
40 | 9. Support web workers to unblock web wallet UIs when performing cryptography.
|
41 |
|
42 | ## Environment Variables
|
43 |
|
44 | * `BSV_JS_BASE_URL` - Default "/".
|
45 | * `BSV_JS_BUNDLE_FILE` - Default "bsv.js"
|
46 | * `BSV_JS_WORKER_FILE` - Default "bsv-worker.js"
|
47 | * `NETWORK` - Default "mainnet"
|
48 |
|
49 | You can change the network to run the CLI in testnet mode:
|
50 |
|
51 | ```
|
52 | NETWORK=testnet ./bin/bsv.js
|
53 | ```
|