Comparing version 1.0.3 to 1.0.4
{ | ||
"name": "blockcast", | ||
"version": "1.0.3", | ||
"version": "1.0.4", | ||
"description": "A multi-transaction protocol for storing data in the Bitcoin blockchain.", | ||
@@ -31,2 +31,3 @@ "main": "./src/index.js", | ||
"async": "^1.3.0", | ||
"blockcypher-unofficial": "^1.4.1", | ||
"jasmine-node": "^1.14.5", | ||
@@ -33,0 +34,0 @@ "mem-common-blockchain": "0.0.1" |
@@ -34,16 +34,14 @@ blockcast | ||
In this example we're using the in memory version that is provided by ```abstract-common-blockchain```. | ||
In this example we're using the in memory version that is provided by ```mem-common-blockchain```. | ||
```javascript | ||
var commonBlockchain = require("abstract-common-blockchain")({ | ||
var commonBlockchain = require("mem-common-blockchain")({ | ||
type: "local" | ||
}); | ||
// var ChainAPI = require("chain-unofficial"); | ||
// or we could connect to testnet | ||
// var commonBlockchain = ChainAPI({ | ||
// network: "testnet", | ||
// key: process.env.CHAIN_API_KEY_ID, | ||
// secret: process.env.CHAIN_API_KEY_SECRET | ||
// commonBlockchain = require('blockcypher-unofficial')({ | ||
// network: "testnet" | ||
// }); | ||
@@ -86,2 +84,13 @@ ``` | ||
How can it be better? | ||
--- | ||
* Support 80 byte OP_RETURN | ||
* Use backwards pointer (native input txid) instead of forwards pointer (spentTxid) | ||
* Exponential fee for unlimited, yet impractical, data sizes. | ||
* Remove per transactions byte headers and use start bytes+length or start bytes/end bytes. | ||
* skip DEFLATE if it is bigger than the data being embedded | ||
Please fork this project and help make it better! | ||
Why Bitcoin? | ||
@@ -88,0 +97,0 @@ --- |
@@ -112,2 +112,3 @@ var assert = require("assert"); | ||
var commonBlockchain = options.commonBlockchain; | ||
var buildStatus = options.buildStatus || function() {}; | ||
var signTransaction = signFromTransactionHex(commonWallet.signRawTransaction); | ||
@@ -129,2 +130,8 @@ options.signTransaction = signTransaction; | ||
buildStatus({ | ||
response: "got payloads" | ||
data: data, | ||
payloadsLength: payloadsLength | ||
}); | ||
var totalCost = payloadsLength * fee; | ||
@@ -154,2 +161,10 @@ var existingUnspents = []; | ||
var signedTxid = signedTxBuilt.getId(); | ||
buildStatus({ | ||
response: "signed transaction", | ||
txid: signedTxid, | ||
count: signedTransactionsCounter, | ||
payloadsLength: payloadsLength | ||
}); | ||
if (signedTransactionsCounter == 0) { | ||
@@ -156,0 +171,0 @@ txid = signedTxid; |
@@ -11,2 +11,3 @@ var bitcoinTransactionBuilder = require("./bitcoin-transaction-builder"); | ||
var propagationStatus = options.propagationStatus || function() {}; | ||
var buildStatus = options.buildStatus || function() {}; | ||
var retryMax = options.retryMax || 5; | ||
@@ -18,2 +19,3 @@ var id = options.id || 0; // THINK ABOUT THIS!!! Maybe go through their recent transactions by default? options.transactions? | ||
fee: fee, | ||
buildStatus: buildStatus, | ||
commonBlockchain: commonBlockchain, | ||
@@ -199,3 +201,4 @@ commonWallet: commonWallet | ||
payloadsLength: payloadsLength, | ||
parseTip: parseTip | ||
parseTip: parseTip, | ||
bitcoinTransactionBuilder: bitcoinTransactionBuilder | ||
}; |
@@ -9,14 +9,3 @@ jasmine.getEnv().defaultTimeoutInterval = 50000; | ||
var commonBlockchain; | ||
if (process.env.CHAIN_API_KEY_ID && process.env.CHAIN_API_KEY_SECRET) { | ||
var ChainAPI = require("chain-unofficial"); | ||
commonBlockchain = ChainAPI({ | ||
network: "testnet", | ||
key: process.env.CHAIN_API_KEY_ID, | ||
secret: process.env.CHAIN_API_KEY_SECRET | ||
}); | ||
} | ||
else { | ||
commonBlockchain = require("mem-common-blockchain")(); | ||
} | ||
var commonBlockchain = require("mem-common-blockchain")(); | ||
@@ -63,2 +52,75 @@ var seed = bitcoin.crypto.sha256("test"); | ||
it("should create transaction with test0.data, using data0.utxo, signed with test0.privateKeyWIF and get text0.txHex", function(done) { | ||
var test0 = require("./raw-transactions/test0.json"); | ||
var test0Wallet = { | ||
signRawTransaction: function(txHex, callback) { | ||
var tx = bitcoin.Transaction.fromHex(txHex); | ||
var key = bitcoin.ECKey.fromWIF(test0.privateKeyWIF) | ||
tx.sign(0, key); | ||
var signedTx = tx; | ||
var txid = signedTx.getId(); | ||
var signedTxHex = signedTx.toHex(); | ||
callback(false, signedTxHex, txid); | ||
}, | ||
address: test0.address | ||
} | ||
var test0Blockchain = { | ||
Addresses: { | ||
Unspents: function(addresses, cb) { cb(false, [[test0.utxo]]) } | ||
} | ||
}; | ||
bitcoinTransactionBuilder.createSignedTransactionsWithData({ | ||
data: test0.data, | ||
id: 0, | ||
commonWallet: test0Wallet, | ||
commonBlockchain: test0Blockchain | ||
}, function(err, signedTransactions) { | ||
expect(signedTransactions.length).toBe(1); | ||
var txHex = signedTransactions[0]; | ||
expect(txHex).toBe(test0.txHex); | ||
done(); | ||
}); | ||
}); | ||
it("should create transaction with test1.data, using data1.utxo, signed with test1.privateKeyWIF and get text1.txHex", function(done) { | ||
var test1 = require("./raw-transactions/test1.json"); | ||
var test1Wallet = { | ||
signRawTransaction: function(txHex, callback) { | ||
var tx = bitcoin.Transaction.fromHex(txHex); | ||
var key = bitcoin.ECKey.fromWIF(test1.privateKeyWIF) | ||
tx.sign(0, key); | ||
var signedTx = tx; | ||
var txid = signedTx.getId(); | ||
var signedTxHex = signedTx.toHex(); | ||
callback(false, signedTxHex, txid); | ||
}, | ||
address: test1.address | ||
} | ||
var test1Blockchain = { | ||
Addresses: { | ||
Unspents: function(addresses, cb) { cb(false, [[test1.utxo]]) } | ||
} | ||
}; | ||
bitcoinTransactionBuilder.createSignedTransactionsWithData({ | ||
data: test1.data, | ||
id: 0, | ||
commonWallet: test1Wallet, | ||
commonBlockchain: test1Blockchain | ||
}, function(err, signedTransactions) { | ||
expect(signedTransactions.length).toBe(8); | ||
expect(signedTransactions).toEqual(test1.txHexes); | ||
done(); | ||
}); | ||
}); | ||
it("should create the transaction for a random string of 30 bytes", function(done) { | ||
@@ -65,0 +127,0 @@ var data = randomString(30); |
@@ -9,14 +9,5 @@ jasmine.getEnv().defaultTimeoutInterval = 50000; | ||
var commonBlockchain; | ||
if (process.env.CHAIN_API_KEY_ID && process.env.CHAIN_API_KEY_SECRET) { | ||
var ChainAPI = require("chain-unofficial"); | ||
commonBlockchain = ChainAPI({ | ||
network: "testnet", | ||
key: process.env.CHAIN_API_KEY_ID, | ||
secret: process.env.CHAIN_API_KEY_SECRET | ||
}); | ||
} | ||
else { | ||
commonBlockchain = require("mem-common-blockchain")(); | ||
} | ||
var commonBlockchain = require('blockcypher-unofficial')({ | ||
network: "testnet" | ||
}); | ||
@@ -23,0 +14,0 @@ var randomJsonObject = function(messageLength) { |
@@ -6,14 +6,3 @@ jasmine.getEnv().defaultTimeoutInterval = 50000; | ||
var commonBlockchain; | ||
if (process.env.CHAIN_API_KEY_ID && process.env.CHAIN_API_KEY_SECRET) { | ||
var ChainAPI = require("chain-unofficial"); | ||
commonBlockchain = ChainAPI({ | ||
network: "testnet", | ||
key: process.env.CHAIN_API_KEY_ID, | ||
secret: process.env.CHAIN_API_KEY_SECRET | ||
}); | ||
} | ||
else { | ||
commonBlockchain = require("mem-common-blockchain")(); | ||
} | ||
var commonBlockchain = require("mem-common-blockchain")(); | ||
@@ -20,0 +9,0 @@ var seed = bitcoin.crypto.sha256("test"); |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
65021
21
1478
120
0
4