Commit Graph

120 Commits

Author SHA1 Message Date
Daniel Cousens
3521584b3a Script: parseChunks now uses bufferutils 2014-06-13 10:49:54 +10:00
Daniel Cousens
4e04eea436 Script: use fromChunks internally for all Script templates 2014-06-13 10:49:52 +10:00
Daniel Cousens
9a72c7437b Script: adds Script.EMPTY constant 2014-06-13 10:49:08 +10:00
Daniel Cousens
6f3d829be0 all: Expected T, got PARAM 2014-05-29 16:09:47 +10:00
Daniel Cousens
7d94d1b068 Script: add fromChunks and without 2014-05-29 16:06:19 +10:00
John Russell
343289229e ensures that pubKey length is greater than m
ensure that pubKey length is greater than m

use Array.isArray over instanceof

error message
2014-05-28 01:48:17 -07:00
Daniel Cousens
08951be66f Script: add createPubKeyScriptPubKey 2014-05-25 10:21:06 +10:00
Kyle Drake
f545ed1279 remove crypto hash transition code 2014-05-25 09:46:06 +10:00
Daniel Cousens
55681e7e5d Script: use PubKey objects not prebuilt Buffers 2014-05-17 00:09:13 +10:00
Daniel Cousens
54cc123d31 Address/Script: consistent function ordering 2014-05-17 00:09:13 +10:00
Daniel Cousens
b99ed46796 opcodes: rename to opcodes 2014-05-13 23:14:07 +10:00
Daniel Cousens
f9782b7c17 opcodes: remove unused reverseMap 2014-05-13 23:12:30 +10:00
Daniel Cousens
1fe8282eda Script: remove redundant opcode.map access 2014-05-13 18:53:30 +10:00
Daniel Cousens
da36003d09 Script: remove sort requirement for multisig 2014-05-09 18:03:41 +10:00
Daniel Cousens
de343b2093 Script: remove Address requirement 2014-05-09 18:03:22 +10:00
Daniel Cousens
f18c5e4c1e Script: removes Script.createP2SHMultiSigScriptSig
It is favoured to compose the scriptSig manually using
Script.createP2SHScriptSig and Script.createMultisigScriptSig.

Added a test to verify that createMultisigScriptSig throws when not
enough signatures a provided and the redeemScript is given.
2014-05-09 16:26:35 +10:00
Daniel Cousens
f8e662e495 Script: rename toScriptHash to getHash and add tests 2014-05-09 13:07:06 +10:00
Daniel Cousens
708aa03390 Transaction/Script: bitcoin network no longer implied
A Transaction (and its subsequent scripts) do not carry any network
specific information in the Bitcoin protocol.
Therefore they can not (without further context) produce the network
specific constants for the generation of the base58 Addresses.

As TransactionOut.address is used heavily throughout Wallet and other
areas of the library, this could not be entirely removed without a large
number of changes.
For now, TransactionOut.address is only defined in the case of
Tx.addOutput being used directly:

      Transaction.addOutput(address, value)
2014-05-08 10:59:58 +10:00
Daniel Cousens
5e0d38ba54 Address: add Address.*ScriptPubKey and tests
The introduction of these two functions allow for the all the network
related code to be eventually removed from Transaction and Script.

Previously the result for non-standard transactions was undefined
behaviour.  This change mandates that an exception is thrown if a
non-standard transaction is input.
2014-05-08 10:59:58 +10:00
Daniel Cousens
0822def7e0 Script: add standard Script.create*ScriptPubKey
Extracts the two Script types out of Script.createOutputScript, and puts
them both under test.

Also renames Script.createMultiSigOutputScript to adhere to the same
convention.
2014-05-08 10:59:58 +10:00
Daniel Cousens
d0f684844c Script: add toHex, fromHex
Script.fromHex previously existed, but was not under any kind of test.
This commit adds tests (despite being a little circular in nature) to
check that the output is as expected.
2014-05-08 10:59:58 +10:00
Daniel Cousens
57b8afbdab Network: rename Network to Networks
This change removes the most common ambiguities.
As the network module is not representative of a class, the lower case
has been used.
2014-05-08 10:59:58 +10:00
Daniel Cousens
929b8d2b62 Script: more consistent input handling 2014-05-08 10:59:58 +10:00
Daniel Cousens
7ad695e427 Script: fix assertion message grammar 2014-05-08 10:59:58 +10:00
Daniel Cousens
74e53b49a5 Script/Transaction: remove untested functions
These functions are not under test, and are unnecessary bloat due to a
confusing API.

Script.from*(asmStr) were two functions that attempted to parse ASM
codes and produce a script from this.
While useful, an parser can be introduced later under a single function
and under test... removed.

Although Script.extractPublicKeys implementation is likely to be correct,
it is not absolute in that what it returns is even strictly a set of
public keys.
It is a useful function, but can be done in a better way later,
probably checking against the Script templates instead.

Transaction.signWithKeys has some inherent undocumented behaviour, and it is not
clear when you would use it over just Transaction.addOutput and
Transaction.sign individually.  Nor does it mimic anything in the
bitcoind API... removed.
2014-05-08 10:59:58 +10:00
Daniel Cousens
a8cf2fdd9e Changes internal serialization to use Buffers instead 2014-05-04 17:31:22 +10:00
Daniel Cousens
10ee5532c3 Serialize now returns a buffer 2014-05-04 15:37:25 +10:00
Daniel Cousens
69c0497038 Renames createInputScript to createPubKeyHashScriptSig 2014-04-26 04:04:19 +10:00
Wei Lu
102f2bd0c9 make sure createInputScript convert pubKey to buffer before writing out bytes
[fixes #156]
2014-04-25 10:01:50 +08:00
Daniel Cousens
f5ce83beca Adds working implementation of Script.createP2SHMultisigScriptSig 2014-04-22 00:28:13 +10:00
Daniel Cousens
64dc11486c Removes resolved TODO 2014-04-20 04:49:04 +10:00
Daniel Cousens
f3a55f63dc Assert uses strictEqual instead of direct comparison 2014-04-20 04:39:29 +10:00
Daniel Cousens
682ec133bb Migrates Address to stricter API subset 2014-04-18 17:12:29 +10:00
Wei Lu
06cd6a698b Merge pull request #139 from dcousens/eckeystrict
Migrates ECKey to stricter API
2014-04-18 09:56:41 +08:00
Daniel Cousens
5adaa7dd54 Prefer Array.prototype.slice over map 2014-04-18 06:43:59 +10:00
Daniel Cousens
b4f70dcdde Migrates ECKey to stricter API 2014-04-18 06:36:27 +10:00
Daniel Cousens
f047afef2d Updates network.js constant names 2014-04-17 05:50:59 +10:00
Wei Lu
4b86b1c7b8 clean up comments & extract methods
[follow-up #125]
2014-04-14 12:53:12 +08:00
sidazhang
aa43e98ac0 Aligning type naming with bitcoind and fixed pubkeyhash bug 2014-04-11 15:20:42 -07:00
Daniel Cousens
c99a576fbd Migrates all usage of crypto-js/sha256 to ./crypto 2014-04-08 23:07:46 +10:00
Daniel Cousens
81d9c8e759 Renames util.js to crypto.js 2014-04-08 22:00:28 +10:00
Daniel Cousens
6fa0c07763 Changes existing code to use new base58 API 2014-04-04 05:10:12 +11:00
Wei Lu
93fe1b4c78 cosmetic standardization
[closes #56]
2014-03-31 11:47:47 +08:00
Wei Lu
83381186d1 add (some) fromAddress and getInType tests to script 2014-03-26 08:43:31 +08:00
Wei Lu
c3880c0cdf script.toAddress -> script.getToAddress 2014-03-26 08:43:31 +08:00
Wei Lu
9f2da415ea fix script constructor array check 2014-03-17 16:13:49 +08:00
Wei Lu
3d6b66e811 move convert methods from util to convert 2014-03-11 09:52:48 +08:00
Wei Lu
d2b790fef9 throw error when input to script constructor is not an array
[#58]
2014-03-09 13:43:36 +08:00
xnova
786198f130 * Fixes address.js to be able to deal with testnet P2SH addresses
* Enhanced address.js testsuite...now also verifies address versions
* Enhances README to show how to run test suite
2014-03-05 16:53:29 -05:00
Wei Lu
bde9b13b15 remove isArray shim
[closes #40]
2014-03-03 11:27:19 +08:00
Andreas Brekken
4a4e75d007 Simplify Script constructor. close #41 2014-03-01 19:19:27 +01:00
Andreas Brekken
354d31a297 Clean up script.js formatting. ref #41 2014-03-01 19:12:50 +01:00
vub
397de49089 Made it process multisig addresses correctly 2013-11-20 16:43:14 -05:00
vub
5e2a9f0c26 Added BIP32 support 2013-11-18 23:47:56 -05:00
vub
a34bc9e2ea Many small improvements 2013-11-02 06:20:09 -04:00
vub
335d0dcd96 bugfix 2013-10-21 15:27:50 -04:00
vub
f53a4e3ffa Added sign with keys method to transaction and did lots of small cleanups 2013-10-21 14:00:31 -04:00
vub
b41a4ecb91 Fixed address object creation bug 2013-10-08 07:13:05 -04:00
vub
038f8d5d99 Removed direct references to Bitcoin 2013-10-08 06:45:13 -04:00
vub
ff8152fe41 Added p2sh support for addOutput 2013-10-08 03:26:34 -04:00
vub
65abb85668 Added to convert.js and some more multisig methods 2013-10-08 02:55:52 -04:00
vub
e43d23235b Added some transaction methods, and removed all internal use of base64 2013-10-07 15:27:19 -04:00
Roman Shtylman
0faac29134 start to split into node commonjs style modules
- no longer is the global Bitcoin used for modules
- cleaner and more maintainable code
- add more tests
2013-02-17 00:40:14 -05:00
justmoon
795abdce1f Fixed formatting. 2012-02-07 07:37:58 +01:00
justmoon
041477918c Typos. 2012-02-05 21:20:06 +01:00
Ben Reeves
b972e868c5 Some multisig changes 2012-02-05 16:04:45 +00:00
Stefan Thomas
09e8c6e184 Added comments. 2012-01-11 10:41:52 +01:00
Stefan Thomas
de21042bb7 Fixes for Script.getInType and Script.simpleInPubKey. 2012-01-11 03:21:43 +01:00
Stefan Thomas
1a7fc9d063 Fixed indents. 2012-01-11 02:40:45 +01:00
Stefan Thomas
8b32d43335 Moved sources into src/ subdirectory. 2011-08-11 18:35:23 +01:00