720kb / BitNFC

Bitcoin NFC Android Mobile Wallet - JS + Ionic + Cordova + Bitcore + Blockchain.info API + Cordova NFC plugin
http://bitnfc.org
99 stars 71 forks source link

Customize Wallet #26

Open bcbear-gun opened 6 years ago

bcbear-gun commented 6 years ago

Hi, Can I change this wallet to other currency wallet?

makevoid commented 6 years ago

Hi, yes potentially, especially for majour crypto currencies it will be quite easy, you need to use a different bitcore-lib settings and find a block explorer that supports the calls needed (roughly: getBalance, getUTXOs, broadcastTransaction). So for example for litecoin you can pass to bitcore-lib the new network settings, for example these:

const litecoinNet = {
  name: 'litecoin',
  alias: 'lite',
  pubkeyhash: 0x30,
  privatekey: 0xb0,
  scripthash: 0x32,
  xpubkey: 0x019da462,
  xprivkey: 0x019d9cfe,
  networkMagic: 0xfbc0b6db,
  port: 9333,
  dnsSeeds: [
    'dnsseed.litecointools.com',
    'dnsseed.litecoinpool.org',
    'dnsseed.ltc.xurious.com',
    'dnsseed.koin-project.com',
    'seed-a.litecoin.loshan.co.uk',
    'dnsseed.thrasher.io'
  ]
}

const liteNet = bitcore.Networks.add(litecoinNet)

and then select that network whenever you generate or load any private key:

https://github.com/720kb/BitNFC/blob/748bae389e0af631582a6d9033e3399f11681405/www/js/factories/bitcoin.js#L21


Otherwise you can use a bitcore-lib fork if present, for example, litecoin has this: https://github.com/litecoin-project/litecore-lib

Then switch the blockchain.info URLS, calls, and all relative methods that use their responses:

getBalance https://github.com/720kb/BitNFC/blob/748bae389e0af631582a6d9033e3399f11681405/www/js/factories/blockchain.js#L16

getUTXOs https://github.com/720kb/BitNFC/blob/748bae389e0af631582a6d9033e3399f11681405/www/js/factories/blockchain.js#L44

pushTX https://github.com/720kb/BitNFC/blob/748bae389e0af631582a6d9033e3399f11681405/www/js/factories/blockchain.js#L67


You can switch them to (keeping litecoin as example):

GetBalance()

Generic documentation:

https://www.blockcypher.com/dev/bitcoin/#address-balance-endpoint

example for litecoin:

https://api.blockcypher.com/v1/ltc/main/addrs/LTCPodGk5FwcJaRzH9yKnwicxzFUbxp6tN/balance

etc...

all assuming if you're using a crypto currency forked off bitcoin, if the currency is very different (ethereum) then you could probably reuse only the UI / NFC provider / Angular controllers part

hope this helps