]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/commitdiff
add SLP Token Type https://github.com/simpleledger/slp-specifications/blob/master...
authoryamada <oukinshu@gmail.com>
Tue, 16 Apr 2019 15:02:00 +0000 (00:02 +0900)
committeryamada <oukinshu@gmail.com>
Tue, 16 Apr 2019 15:02:00 +0000 (00:02 +0900)
src/js/bchaddrjs-0.2.1.js
src/js/index.js
tests/spec/tests.js

index 8356f1050919de7cc077a72945e884101b389e23..28f67e98bd978977fe8a80cf392f9930e61a85f5 100644 (file)
@@ -3356,7 +3356,7 @@ var validate = validation.validate;
 
 /**
  * Encodes a hash from a given type into a Bitcoin Cash address with the given prefix.
- * 
+ *
  * @static
  * @param {string} prefix Network prefix. E.g.: 'bitcoincash'.
  * @param {string} type Type of address to generate. Either 'P2PKH' or 'P2SH'.
@@ -3378,7 +3378,7 @@ function encode(prefix, type, hash) {
 
 /**
  * Decodes the given address into its constituting prefix, type and hash. See [#encode()]{@link encode}.
- * 
+ *
  * @static
  * @param {string} address Address to decode. E.g.: 'bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a'.
  * @returns {object}
@@ -3416,14 +3416,14 @@ var ValidationError = validation.ValidationError;
  *
  * @private
  */
-var VALID_PREFIXES = ['bitcoincash', 'bchtest', 'bchreg'];
+var VALID_PREFIXES = ['bitcoincash', 'bchtest', 'bchreg', 'simpleledger', 'slptest'];
 
 /**
  * Checks whether a string is a valid prefix; ie., it has a single letter case
- * and is one of 'bitcoincash', 'bchtest', or 'bchreg'.
+ * and is one of 'bitcoincash', 'bchtest', or 'bchreg', 'simpleledger' or 'slptest'.
  *
  * @private
- * @param {string} prefix 
+ * @param {string} prefix
  * @returns {boolean}
  */
 function isValidPrefix(prefix) {
@@ -3435,7 +3435,7 @@ function isValidPrefix(prefix) {
  * of the address' checksum.
  *
  * @private
- * @param {string} prefix Network prefix. E.g.: 'bitcoincash'. 
+ * @param {string} prefix Network prefix. E.g.: 'bitcoincash'.
  * @returns {Uint8Array}
  */
 function prefixToUint5Array(prefix) {
@@ -3594,8 +3594,8 @@ function fromUint5Array(data) {
  * Returns the concatenation a and b.
  *
  * @private
- * @param {Uint8Array} a 
- * @param {Uint8Array} b 
+ * @param {Uint8Array} a
+ * @param {Uint8Array} b
  * @returns {Uint8Array}
  * @throws {ValidationError}
  */
@@ -3633,7 +3633,7 @@ function polymod(data) {
 /**
  * Verify that the payload has not been corrupted by checking that the
  * checksum is valid.
- * 
+ *
  * @private
  * @param {string} prefix Network prefix. E.g.: 'bitcoincash'.
  * @param {Uint8Array} payload Array of 5-bit integers containing the address' payload.
@@ -9011,6 +9011,21 @@ function toCashAddress (address) {
   return encodeAsCashaddr(decoded)
 }
 
+/**
+ * Translates the given address into SLP format.
+ * @static
+ * @param {string} address - A valid SLP address in any format.
+ * @return {string}
+ * @throws {InvalidAddressError}
+ */
+function toSlpAddress (address) {
+  var decoded = decodeAddress(address)
+  return encodeAsSlpaddr(decoded)
+}
+
+
+
+
 /**
  * Version byte table for base58 formats.
  * @private
@@ -9125,7 +9140,7 @@ function decodeCashAddress (address) {
     } catch (error) {
     }
   } else {
-    var prefixes = ['bitcoincash', 'bchtest', 'regtest']
+    var prefixes = ['bitcoincash', 'bchtest', 'regtest', 'simpleledger', 'slptest']
     for (var i = 0; i < prefixes.length; ++i) {
       try {
         var prefix = prefixes[i]
@@ -9151,6 +9166,7 @@ function decodeCashAddressWithPrefix (address) {
     var type = decoded.type === 'P2PKH' ? Type.P2PKH : Type.P2SH
     switch (decoded.prefix) {
       case 'bitcoincash':
+      case 'simpleledger':
         return {
           hash: hash,
           format: Format.Cashaddr,
@@ -9158,6 +9174,7 @@ function decodeCashAddressWithPrefix (address) {
           type: type
         }
       case 'bchtest':
+      case 'slptest':
       case 'regtest':
         return {
           hash: hash,
@@ -9212,6 +9229,19 @@ function encodeAsCashaddr (decoded) {
   return cashaddr.encode(prefix, type, hash)
 }
 
+ /**
+  * Encodes the given decoded address into slp addr format.
+  * @private
+  * @param {object} decoded
+  * @returns {string}
+  */
+ function encodeAsSlpaddr (decoded) {
+   var prefix = decoded.network === Network.Mainnet ? 'simpleledger' : 'slptest'
+   var type = decoded.type === Type.P2PKH ? 'P2PKH' : 'P2SH'
+   var hash = Uint8Array.from(decoded.hash)
+   return cashaddr.encode(prefix, type, hash)
+ }
+
 /**
  * Returns a boolean indicating whether the address is in legacy format.
  * @static
@@ -9313,6 +9343,7 @@ module.exports = {
   toLegacyAddress: toLegacyAddress,
   toBitpayAddress: toBitpayAddress,
   toCashAddress: toCashAddress,
+  toSlpAddress: toSlpAddress,
   isLegacyAddress: isLegacyAddress,
   isBitpayAddress: isBitpayAddress,
   isCashAddress: isCashAddress,
@@ -9325,4 +9356,4 @@ module.exports = {
 
 }).call(this,require("buffer").Buffer)
 },{"bs58check":7,"buffer":8,"cashaddrjs":10}]},{},[52])(52)
-});
\ No newline at end of file
+});
index 8c23e615c26b484201f12af2abf215fa40975064..057d7093402b8f7d47359608a0903add76f06f22 100644 (file)
                         address = bchaddr.toBitpayAddress(address);
                     }
                 }
+                 // Bitcoin Cash address format may vary
+                 if (networks[DOM.network.val()].name == "SLP - Simple Ledger Protocol") {
+                     var bchAddrType = DOM.bitcoinCashAddressType.filter(":checked").val();
+                     if (bchAddrType == "cashaddr") {
+                         address = bchaddr.toSlpAddress(address);
+                     }
+                 }
                 // Segwit addresses are different
                 if (isSegwit) {
                     if (!segwitAvailable) {
                 network = bitcoinjs.bitcoin.networks.blocknode;
                 setHdCoin(2941);
             },
-        },     
+        },
                {
             name: "tBND - Blocknode Testnet",
             onSelect: function() {
                 setHdCoin(111);
             },
         },
+        {
+            name: "SLP - Simple Ledger Protocol",
+            onSelect: function() {
+                DOM.bitcoinCashAddressTypeContainer.removeClass("hidden");
+                setHdCoin(245);
+            },
+        },
         {
             name: "SLR - Solarcoin",
             onSelect: function() {
index 364349cfb9a9312411a2050fb92309e3d7532b82..d71a61c9c1966a10b260d7a1d2157c1e30cae14e 100644 (file)
@@ -564,6 +564,15 @@ it('Allows selection of bitcoin cash', function(done) {
     };
     testNetwork(done, params);
 });
+
+it('Allows selection of simpleledger(SLP)', function(done) {
+    var params = {
+        selectText: "SLP - Simple Ledger Protocol",
+        firstAddress: "simpleledger:qrtffz6ajfsn74gpur7y3epjquz42pvww5acewqmre",
+    };
+    testNetwork(done, params);
+});
+
 it('Allows selection of myriadcoin', function(done) {
     var params = {
         selectText: "XMY - Myriadcoin",