You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
Paul Shapiro d87f12b773
added missing OnceModuleReady to bridged fns ... this might get replaced with promises
6 years ago
bin switching back to wasm and optimizing via lto - we must be on the watch for regressions with LTO; removing link to various boost libs which are apparently unnecessary - surprised me, not sure I understand 6 years ago
configs fix ups to emscripten build procedures; swapped cryptonote_crypto_EMSCRIPTEN with MyMoneroCoreCpp.(js,wasm), and had to introduce blocking to methods which use CNCrypto var due to new async Module init; updated Readme 6 years ago
cryptonote_utils cryptonote_utils/decode_address: added missing bool parse 6 years ago
hostAPI updated MyMoneroCoreCpp.js build; cryptonote_utils: extracted destination formatting and money amount formatting to sendingFunds_utils and money_format_utils respectively, and added IPCsafe (string instead of JSBigInt params) create_transaction variant to support call from electron renderer procs etc, and added more complete load readiness waiting interface, and added locateFile impl for passing as emscripten Module template to locate wasm file in various environments; monero_cryptonote_utils_instance: detecting electron renderer and exposing via electron.remote call (will this cause issues with anyone's build systems trying to include electron\?); commenting logs 6 years ago
monero_utils added missing OnceModuleReady to bridged fns ... this might get replaced with promises 6 years ago
src updated mymonerocorecpp with create tx tweaks from feedback 6 years ago
tests removed old jest tests.. test which requires index.js triggers Math.random throw somehow.. crypto module / env probably not detected in emscripten.. considering dumping jest(..\?); --verbose on jest call 6 years ago
.eslintignore basic eslint config .. eslintignoring cryptonote_utils for now for emscripten anyway but that can probably be made more specific to the files we want to exclude 6 years ago
.eslintrc.json Add prettier support 6 years ago
.gitignore openssl build scripts -- pending bridge to new C++ impls, incl bulletproofs 6 years ago
.gitmodules removed monero-core-custom top lvl submod as it's now within mymonero-core-cpp 6 years ago
.prettierignore removing some now unused files and switching pid gen to monero_utils 6 years ago
.prettierrc Add prettier support 6 years ago
CMakeLists.txt switching back to wasm and optimizing via lto - we must be on the watch for regressions with LTO; removing link to various boost libs which are apparently unnecessary - surprised me, not sure I understand 6 years ago
LICENSE.txt copyright 6 years ago
README.md readme: removed empty library roadmap section; updated regular contributors 6 years ago
index.js removed now unneccessary monero_wallet_utils wrapper fns 6 years ago
package.json removed old jest tests.. test which requires index.js triggers Math.random throw somehow.. crypto module / env probably not detected in emscripten.. considering dumping jest(..\?); --verbose on jest call 6 years ago
wallaby.js removing some now unused files and switching pid gen to monero_utils 6 years ago

README.md

MyMonero Core JS

Info

  1. Legal
  2. What's in This Repo?
  3. Library API Documentation
  4. Building MyMoneroCoreCpp from Scratch

Contributing

  1. QA
  2. Pull Requests

Info

See LICENSE.txt for license.

All source code copyright © 2014-2018 by MyMonero. All rights reserved.

What's in This Repo?

This repository holds the Javascript source code for the Monero/CryptoNote cryptography and protocols, plus lightwallet functions which power the official MyMonero apps.

There is also a chain of build scripts which is capable of building a JS module by transpiling a subset of Monero source code via emscripten, which relies upon static boost libs, for which there is also a script for building from source.

Contents

  • monero_utils contains Monero- and MyMonero-specific implementations, wrappers, and declarations.

  • cryptonote_utils contains the MyMonero JS implementations for the underlying cryptography behind Monero.

    • cryptonote_utils/MyMoneroCoreCpp.(js,wasm) are produced by transpiling Monero core C++ code to JS via Emscripten (See Building MyMoneroCoreCpp). A Module instance is managed by cryptonote_utils/cryptonote_utils.js.
  • This readme is located at README.md, and the license is located at LICENSE.txt.

Library API Documentation

Coming soon

Building MyMoneroCoreCpp from Scratch

There's no need to build cryptonote_utils/MyMoneroCoreCpp as a build is provided, but if you were for example interested in adding a C++ function, you could use the information in this section to transpile it to JS.

Repository Setup

  • Execute bin/update_submodules

Install Emscripten SDK

Ensure you've properly installed Emscripten and exposed the Emscripten executables in your PATH, e.g.:

source ./emsdk_env.sh

Boost for Emscripten

Depends upon: Emscripten SDK

Download a copy of the contents of the Boost source into ./contrib/boost-sdk/.

  • Execute bin/build-boost-emscripten.sh

Emscripten Module

Depends upon: Repository Setup, Emscripten SDK, Boost for Emscripten

  • Execute bin/build-emcpp.sh

Or if you want to copy the build products to their distribution locations,

  • Execute bin/archive-emcpp.sh

Contributing

QA

Please submit any bugs as Issues unless they have already been reported.

Suggestions and feedback are very welcome!

Pull Requests

We'll merge nearly anything constructive. Contributors welcome and credited in releases.

We often collaborate over IRC in #mymonero on Freenode.

All development happens off the develop branch like the Gitflow Workflow.

Regular contributors

  • 💿 endogenic (Paul Shapiro) Maintainer

  • 🍄 luigi Major contiributor of original JS core crypto and Monero-specific routines; Advisor

  • 🏄‍♂️ paullinator (Paul Puey) API design

  • 🔒 cryptochangement Subaddress send & decode support; Initial tests