cashaccounts
Advanced tools
Comparing version 0.5.0 to 1.0.0
111
index.js
@@ -10,2 +10,4 @@ const EmojiList = require('./emoji_names.json'); | ||
let BITBOX = require('bitbox-sdk').BITBOX; | ||
let bitbox = new BITBOX(); | ||
const genesisBlock = 563720 - 100; | ||
@@ -555,18 +557,2 @@ | ||
/** | ||
* broadcast cashaccount registration with your own node | ||
* | ||
* @param {string} username | ||
* @param {string} bchAddress | ||
* @param {string} slpAddress | ||
* @returns {string} txid - registration transaction hash | ||
* @memberof CashAccounts | ||
*/ | ||
async trustlessRegistration(username, bchAddress, slpAddress) { | ||
let txString = await this.generateRawTx(username, bchAddress, slpAddress); | ||
let hex = await bchNode.signRawTransaction(txString); | ||
let txid = await bchNode.sendRawTransaction(hex.hex); | ||
return txid; | ||
} | ||
/** | ||
* find cash accounts associated with an address | ||
@@ -597,95 +583,16 @@ * | ||
/** | ||
* creates the raw transaction to be broadcast later | ||
* turn string username into hex'ed string for registration | ||
* | ||
* @param {string} username | ||
* @param {string} bchAddress | ||
* @param {string} slpAddress | ||
* @returns {string} raw transaction of registration | ||
* @returns string | ||
* @memberof CashAccounts | ||
*/ | ||
async generateRawTx(username, bchAddress, slpAddress) { | ||
let registrationObj = this.createRegistrationObj( | ||
username, | ||
bchAddress, | ||
slpAddress | ||
); | ||
let script = this.buildScript(registrationObj); | ||
let unspent = await this.bchNode.listUnspent(1); | ||
if (unspent === undefined || unspent.length === 0) { | ||
unspent = await this.bchNode.listUnspent(0); | ||
} | ||
if (unspent === undefined || unspent.length === 0) { | ||
return { status: 'no UTXOs available' }; | ||
} | ||
const changeAddr = await this.bchNode.getRawChangeAddress(); | ||
let tx = new bch.Transaction().from(unspent).feePerKb(1002); | ||
tx.addOutput(new bch.Transaction.Output({ script: script, satoshis: 0 })); | ||
tx.change(changeAddr); | ||
return tx.toString(); | ||
encodeUsername(username) { | ||
const buffer = Buffer.from(username, 'utf8'); | ||
let encoded = bitbox.Script.encodeNullDataOutput(buffer); | ||
const encodedUsername = bitbox.Script.toASM(encoded).split('OP_RETURN ')[1]; | ||
return encodedUsername; | ||
} | ||
/** | ||
* creates the raw op return script | ||
* | ||
* @param {string} username | ||
* @param {string} bchAddress | ||
* @param {string} slpAddress | ||
* @returns {string} registration script | ||
* @memberof CashAccounts | ||
*/ | ||
async createRawOpReturn(username, bchAddress, slpAddress) { | ||
let registrationObj = this.createRegistrationObj( | ||
username, | ||
bchAddress, | ||
slpAddress | ||
); | ||
let script = this.buildScript(registrationObj); | ||
return script.toString(); | ||
} | ||
/** | ||
* | ||
build opreturn script | ||
* | ||
* @param {oject} registrationObj | ||
* @returns | ||
* @memberof CashAccounts | ||
*/ | ||
buildScript(registrationObj) { | ||
const { username, bchHash, slpHash } = registrationObj; | ||
let bch_map = { | ||
p2pkh: '01', | ||
p2sh: '02', | ||
p2pc: '03', | ||
p2sk: '04' | ||
}; | ||
let token_map = { | ||
p2pkh: '81', | ||
p2sh: '82', | ||
p2pc: '83', | ||
p2sk: '84' | ||
}; | ||
const s = new bch.Script(); | ||
s.add(bch.Opcode.OP_RETURN); | ||
s.add(Buffer.from('01010101', 'hex')); | ||
s.add(Buffer.from(username, 'utf8')); | ||
for (let [key, value] of Object.entries(bchHash)) { | ||
s.add(Buffer.from(bch_map[key] + value, 'hex')); | ||
} | ||
if (slpHash !== undefined) { | ||
for (let [key, value] of Object.entries(slpHash)) { | ||
s.add(Buffer.from(token_map[key] + value, 'hex')); | ||
} | ||
} | ||
return s; | ||
} | ||
/** | ||
* get hash from address for registration protocol | ||
@@ -692,0 +599,0 @@ * |
{ | ||
"name": "cashaccounts", | ||
"version": "0.5.0", | ||
"version": "1.0.0", | ||
"description": "decentralized identity system for bitcoin cash by Jonathan Silverblood", | ||
@@ -15,2 +15,3 @@ "main": "index.js", | ||
"bchaddrjs-slp": "https://github.com/simpleledger/bchaddrjs.git", | ||
"bitbox-sdk": "^8.4.2", | ||
"bitcoin-cash-rpc": "^0.4.2", | ||
@@ -17,0 +18,0 @@ "bitcoincashjs-lib": "https://github.com/Bitcoin-com/bitcoincashjs-lib.git", |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
2
27069
7
791
+ Addedbitbox-sdk@^8.4.2
+ Added@bitcoin-dot-com/bitcoincashjs2-lib@4.1.0(transitive)
+ Added@socket.io/component-emitter@3.1.2(transitive)
+ Added@types/bigi@1.4.5(transitive)
+ Added@types/bip39@2.4.2(transitive)
+ Added@types/engine.io@3.1.10(transitive)
+ Added@types/node@22.13.5(transitive)
+ Added@types/randombytes@2.0.3(transitive)
+ Added@types/socket.io@2.1.13(transitive)
+ Added@types/socket.io-client@1.4.36(transitive)
+ Added@types/socket.io-parser@3.0.0(transitive)
+ Added@types/wif@2.0.5(transitive)
+ Addedaccepts@1.3.8(transitive)
+ Addedafter@0.8.2(transitive)
+ Addedarraybuffer.slice@0.0.7(transitive)
+ Addedassert@1.5.1(transitive)
+ Addedaxios@0.19.0(transitive)
+ Addedbacko2@1.0.2(transitive)
+ Addedbase-x@3.0.10(transitive)
+ Addedbase64-arraybuffer@0.1.4(transitive)
+ Addedbase64id@2.0.0(transitive)
+ Addedbc-bip68@1.0.5(transitive)
+ Addedbech32@1.1.4(transitive)
+ Addedbig-integer@1.6.52(transitive)
+ Addedbig.js@3.2.0(transitive)
+ Addedbigi@1.4.2(transitive)
+ Addedbindings@1.5.0(transitive)
+ Addedbip-schnorr@0.3.0(transitive)
+ Addedbip38@2.0.3(transitive)
+ Addedbip39@2.6.0(transitive)
+ Addedbip66@1.1.5(transitive)
+ Addedbitbox-sdk@8.11.2(transitive)
+ Addedbitcoinjs-message@2.2.0(transitive)
+ Addedblob@0.0.5(transitive)
+ Addedbn.js@4.12.1(transitive)
+ Addedbrorand@1.1.0(transitive)
+ Addedbrowserify-aes@1.2.0(transitive)
+ Addedbs58@4.0.1(transitive)
+ Addedbs58check@2.1.2(transitive)
+ Addedbuffer-equals@1.0.4(transitive)
+ Addedbuffer-xor@1.0.3(transitive)
+ Addedcall-bind@1.0.8(transitive)
+ Addedcall-bind-apply-helpers@1.0.2(transitive)
+ Addedcall-bound@1.0.3(transitive)
+ Addedcashaddrjs@0.2.9(transitive)
+ Addedcipher-base@1.0.6(transitive)
+ Addedcomponent-bind@1.0.0(transitive)
+ Addedcomponent-emitter@1.2.11.3.1(transitive)
+ Addedcomponent-inherit@0.0.3(transitive)
+ Addedcookie@0.4.2(transitive)
+ Addedcreate-hash@1.2.0(transitive)
+ Addedcreate-hmac@1.1.7(transitive)
+ Addeddebug@4.1.14.3.7(transitive)
+ Addeddefine-data-property@1.1.4(transitive)
+ Addeddefine-properties@1.2.1(transitive)
+ Addeddrbg.js@1.0.1(transitive)
+ Addeddunder-proto@1.0.1(transitive)
+ Addedecurve@1.0.6(transitive)
+ Addedelliptic@6.6.1(transitive)
+ Addedengine.io@3.6.2(transitive)
+ Addedengine.io-client@3.5.4(transitive)
+ Addedengine.io-parser@2.2.1(transitive)
+ Addedes-define-property@1.0.1(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedes-object-atoms@1.1.1(transitive)
+ Addedeventsource@1.1.2(transitive)
+ Addedevp_bytestokey@1.0.3(transitive)
+ Addedfile-uri-to-path@1.0.0(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedget-intrinsic@1.3.0(transitive)
+ Addedget-proto@1.0.1(transitive)
+ Addedgopd@1.2.0(transitive)
+ Addedhas-binary2@1.0.3(transitive)
+ Addedhas-cors@1.1.0(transitive)
+ Addedhas-property-descriptors@1.0.2(transitive)
+ Addedhas-symbols@1.1.0(transitive)
+ Addedhash-base@3.1.0(transitive)
+ Addedhash.js@1.1.7(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhmac-drbg@1.0.1(transitive)
+ Addedindexof@0.0.1(transitive)
+ Addedinherits@2.0.32.0.4(transitive)
+ Addedis-buffer@2.0.5(transitive)
+ Addedisarray@2.0.1(transitive)
+ Addedjs-sha256@0.9.0(transitive)
+ Addedmath-intrinsics@1.1.0(transitive)
+ Addedmd5.js@1.3.5(transitive)
+ Addedmerkle-lib@2.0.10(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedminimalistic-assert@1.0.1(transitive)
+ Addedminimalistic-crypto-utils@1.0.1(transitive)
+ Addedms@2.1.3(transitive)
+ Addednan@2.22.2(transitive)
+ Addednegotiator@0.6.3(transitive)
+ Addedobject-keys@1.1.1(transitive)
+ Addedobject.assign@4.1.7(transitive)
+ Addedparseqs@0.0.6(transitive)
+ Addedparseuri@0.0.6(transitive)
+ Addedpbkdf2@3.1.2(transitive)
+ Addedrandom-bytes@1.0.0(transitive)
+ Addedrandombytes@2.1.0(transitive)
+ Addedreadable-stream@3.6.2(transitive)
+ Addedripemd160@2.0.2(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedsatoshi-bitcoin@1.0.5(transitive)
+ Addedscryptsy@2.1.0(transitive)
+ Addedsecp256k1@3.8.1(transitive)
+ Addedset-function-length@1.2.2(transitive)
+ Addedsha.js@2.4.11(transitive)
+ Addedsocket.io@2.5.1(transitive)
+ Addedsocket.io-adapter@1.1.2(transitive)
+ Addedsocket.io-client@2.5.0(transitive)
+ Addedsocket.io-parser@3.3.43.4.34.2.4(transitive)
+ Addedstring_decoder@1.3.0(transitive)
+ Addedto-array@0.1.4(transitive)
+ Addedtypeforce@1.18.0(transitive)
+ Addedundici-types@6.20.0(transitive)
+ Addedunorm@1.6.0(transitive)
+ Addedutil@0.10.4(transitive)
+ Addedutil-deprecate@1.0.2(transitive)
+ Addedvaruint-bitcoin@1.1.2(transitive)
+ Addedwif@2.0.6(transitive)
+ Addedws@7.5.10(transitive)
+ Addedxmlhttprequest-ssl@1.6.3(transitive)
+ Addedyeast@0.1.2(transitive)