2023-07-08 19:28:49 -06:00
2023-09-15 10:43:32 +09:00
2023-05-09 16:16:43 -06:00
2024-03-18 23:32:55 -06:00
2023-08-31 15:59:44 +09:00
2023-07-26 15:19:41 -06:00
2023-08-11 14:37:12 -06:00

Vanillae

How to use this project

Downloads

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. 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 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), 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, 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 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

S
Description
No description provided
Readme
16 MiB
Languages
Python 88.2%
HTML 10.1%
TypeScript 1%
Erlang 0.6%
CSS 0.1%