Skip to content

Currency plugins for accounts based blockchains such as Ethereum, Xrp, and EOS

License

Notifications You must be signed in to change notification settings

EdgeApp/edge-currency-accountbased

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Edge Currency Plugin for Account-Based currencies

Build Status

Plugins for edge-core-js, handling many networks not derived from Bitcoin.

These are compatible with edge-core-js v0.21.2 or later.

Installing

First, add this library to your project:

npm i -s edge-currency-accountbased

Node.js

For Node.js, you should call addEdgeCorePlugins to register these plugins with edge-core-js:

const { addEdgeCorePlugins, lockEdgeCorePlugins } = require('edge-core-js')
const plugins = require('edge-currency-accountbased')

addEdgeCorePlugins(plugins)

// Once you are done adding plugins, call this:
lockEdgeCorePlugins()

You can also add plugins individually if you want to be more picky:

addEdgeCorePlugins({
  ethereum: plugins.ethereum
})

Browser

The bundle located in dist/edge-currency-accountbased.js will automatically register itself with edge-core-js. Just serve the entire dist directory along with your app, and then load the script:

<script src='https://example.com/app/dist/edge-currency-accountbased.js'>

If you want to debug this project, run yarn start to start a Webpack server, and then adjust your script URL to http://localhost:8082/edge-currency-accountbased.js.

React Native

The edge-currency-accountbased package will automatically install itself using React Native autolinking. To integrate the plugins with edge-core-js, add its URI to the context component:

import { pluginUri, makePluginIo } from 'edge-currency-accountbased/rn'

<MakeEdgeContext
  nativeIo={{
    'edge-currency-accountbased': makePluginIo()
  }}
  pluginUris={[pluginUri]}
  // Plus other props as required...
/>

To debug this project, run yarn start to start a Webpack server, and then use debugUri instead of pluginUri.

Notice the /rn suffix on the import statement. If you leave this off (which is deprecated), react-native-piratechain and react-native-zcash will both be mandatory, and the instructions below won't apply.

Zcash / Piratechain

These chains only work on React Native. To use them, first install the following packages using the instructions in their repos:

Then, add the correct IO objects to the core:

import { pluginUri, makePluginIo } from 'edge-currency-accountbased/rn'
import { makePiratechainIo } from 'edge-currency-accountbased/rn-piratechain'
import { makeZcashIo } from 'edge-currency-accountbased/rn-zcash'

<MakeEdgeContext
  nativeIo={{
    'edge-currency-accountbased': makePluginIo()
    piratechain: makePiratechainIo(),
    zcash: makeZcashIo(),
  }}
  pluginUris={[pluginUri]}
  // Plus other props as required...
/>

Contributing

You'll need to install Yarn 1.3.2 globally on your machine

To set up this project, just do:

git clone [email protected]:EdgeApp/edge-currency-accountbased.git`
cd edge-currency-accountbased
yarn
yarn prepare

Run yarn test to run the unit tests.

To test your changes in the full Edge wallet app, run yarn start to start a web server, and then set DEBUG_ACCOUNTBASED in your env.json to use the web server instead of the bundled library.

You can also do updot edge-currency-accountbased from within edge-react-gui to copy your edits in to node_modules. Re-build and re-launch the app to use the updated plugins.

Adding a New Blockchain / Currency

Please note that our team considers (but does not guarantee) PR's to add new currencies / blockchains to this repo's master branch (included into production version of Edge Wallet). Among other requirements the code must satisfy the following guidelines:

Naming Convention

Plugins take their names from the network, not the currency. For instance, the "ripple" plugin supports the Ripple network. There are many currencies on the Ripple network, including XRP, tokens, and bank-backed currencies, so naming the Ripple plugin "xrp" would be too narrow.

The same principle applies to all the plugins in this repository, with a few unfortunate exceptions.

License

BSD 3