131 lines
6.3 KiB
Markdown
131 lines
6.3 KiB
Markdown
# Vanillae
|
|
|
|
## How to use this project
|
|
|
|
|
|
## Downloads
|
|
|
|
|
|
## Quick Links
|
|
|
|
- [Vanillae Grant Proposal][grant-proposal]
|
|
- [Vanillae Files][vanillae-files], miscellaneous explainers mostly for
|
|
things that should take 1 hour to learn but in practice take 11 hours
|
|
because information has to be synthesized from multiple sources
|
|
|
|
- Video content
|
|
- [Vanillae Rumble Channel](https://rumble.com/c/c-3509606)
|
|
- [Vanillae Odysee Channel](https://odysee.com/@VanillaeProject:0)
|
|
- [Vanillae YouTube Channel](https://www.youtube.com/@vanillaeproject)
|
|
- Miscellany:
|
|
- [Aegora.jp][aegora], original impetus for product
|
|
- [Aeternity JS SDK][aesdk], which you want for more complicated use cases
|
|
|
|
## About this project
|
|
|
|
Aeternity is a high-performance open-source decentralized payment network.
|
|
Vanillae is a tool suite for using Aeternity. There is both developer-facing
|
|
tooling and user-facing tooling. There is also miscellaneous documentation, and
|
|
explainers etc.
|
|
|
|
The two developers are Craig Everett (@zxq9) and Peter Harpending (@pharpend).
|
|
Vanillae grew out of [Aegora.jp][aegora]. We made a simple
|
|
e-commerce store using Aeternity as the payment system. We encountered a lot
|
|
of rough edges in Aeternity's tooling, so developed our own, and
|
|
open-sourced it. The Aeternity Foundation chose to pay us to grow out our
|
|
toolset, and that became this project. You can read the [grant
|
|
proposal][grant-proposal] for more information.
|
|
|
|
Often during this process we ran into some thing that really should take 1 hour
|
|
to learn about, but in practice takes 11 hours because you have to synthesize
|
|
information from 100 different sources. In many of those cases, we went to the
|
|
trouble to write it all out in one place (that's the [Vanillae
|
|
Files][vanillae-files]), and in some cases there are videos on our
|
|
YT/Rumble/Odysee channels.
|
|
|
|
The goal is to write an explainer doc and have one or more videos for each
|
|
instance of information synthesis paralysis.
|
|
|
|
Generally, we write tools that we want to use. So
|
|
|
|
- Functionality tends to be pretty minimal.
|
|
- The only usage cases covered are those we have actually encountered.
|
|
- When we encounter a tradeoff between simplicity and flexibility, we
|
|
generally have chosen simplicity.
|
|
- Our primary deployment target is the [zx/zomp ecosystem][zx-zomp], not the
|
|
Node/NPM ecosystem
|
|
|
|
For instance, this means that our JS/TS code is meant to run inside a
|
|
browser, and we don't give any thought to running it as server-side JS,
|
|
because that's not something we would ever do ourselves.
|
|
|
|
We're happy to support the Node/NPM ecosystem on a case-by-case basis as
|
|
long as it doesn't force us to reduce the quality of our product.
|
|
|
|
If you have a more complicated use case or live in the Node/NPM ecosystem, you
|
|
want the [Aeternity JavaScript SDK][aesdk] The SDK is a Swiss Army Knife.
|
|
Vanillae is just a set of knives, each of which was designed for a specific
|
|
cutting task.
|
|
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
art/ Project icons, etc
|
|
bindings/ FLAGSHIP: APIs to talk to the AE blockchain from app backend
|
|
erlang/ [ERL] Erlang Vanillae Bindings
|
|
docs/ Explainer docs
|
|
baseN/ Base64 versus Base58 (they are fundamentally different ideas!)
|
|
ecc/ Elliptic Curve Cryptography
|
|
jex/ Jex: our TS/JS packaging tool we use instead of NPM
|
|
kek/ The Keccak/SHA-3 Algorithm explained
|
|
npm-misc/ How to install NPM on Linux such that you never have to use `sudo npm`
|
|
rlp/ Ethereum's Recursive-Length-Prefix codec explained
|
|
seed-phrases/ How seed phrase recovery works
|
|
sk-awcp/ How to use Sidekick and AWCP
|
|
jrx/ [TS] FLAGSHIP: the Jack Russell browser wallet extension
|
|
libs/ Miscellaneous (non-flagship) libraries
|
|
awcp/ [TS] Aepp-Waellet Communication Protocol: types for messages sent between page scripts and browser extension wallets
|
|
parasite/ [TS] Function library for talking to public aeternity nodes (do not use please)
|
|
tweetnacl/ [TS] Jex-packaged clone of public domain TweetNaCL library
|
|
vdk_aeser/ [TS] Serializer/deserializer library for AE data structures
|
|
vdk_base58/ [TS] Base 58 encode/decode library
|
|
vdk_base64/ [TS] Base 64 encode/decode library
|
|
vdk_binary/ [TS] Miscellaneous binary functions that should exist in the stdlib but don't
|
|
vdk_colors/ [TS] Assigns a color to arbitrary byte array (for color-coding keys in JR)
|
|
vdk_faert/ [TS] Fast AEternity Recovery Text: a replacement for the Bitcoin seed phrase standard
|
|
vdk_names/ [TS] Assigns a human readable name to a byte array (for naming keys in JR)
|
|
vdk_rlp/ [TS] Ethereum RLP standard TypeScript library
|
|
vdk_safe/ [TS] Equivalent of Haskell's Either type
|
|
vdk_tests/ [TS] Test/example suite for VDK
|
|
vdk_tests_cases/ [TS] Randomly generated test cases for some VDK packages (e.g. checking our RLP agrees with Ethereum's)
|
|
vrlp/ [ERL] Ethereum RLP library in Erlang
|
|
sidekick/ [TS] FLAGSHIP: TS library to talk to browser wallet extension (e.g. Superhero, hence name) from page script
|
|
sidekick_examples/ [TS] Example/test suite for sidekick
|
|
site/ Website for the vanillae project (soon to be deprecated/deleted)
|
|
utils/ Miscellaneous utilities
|
|
jex/ [ERL] Simple TS/JS packaging utility, our alternative to NPM
|
|
vlogd/ [ERL] Simple HTTP server that just logs input data, for demoing sidekick's HTTP logging functionality
|
|
vw/ [ERL] Vanillae Wallet: scratchpad for working out complicated wallet stuff (e.g. seed phrase recovery) in saner environment
|
|
```
|
|
|
|
## Flagship products
|
|
|
|
### Vanillae Bindings
|
|
|
|
### Jack Russell
|
|
|
|
### Sidekick
|
|
|
|
## Miscellaneous products of note
|
|
|
|
### Vanillae Files
|
|
|
|
### Jex
|
|
|
|
[aegora]: https://aegora.jp
|
|
[aesdk]: https://github.com/aeternity/aepp-sdk-js
|
|
[grant-proposal]: https://forum.aeternity.com/t/active-application-vanillae/10638
|
|
[vanillae-files]: ./docs/
|
|
[zx-zomp]: http://zxq9.com/projects/zomp/
|