Commit Graph

429 Commits

Author SHA1 Message Date
Manuel Aráoz 01b74b8df5 Merge pull request #695 from eordano/feature/errors
Add a preconditions module, and refactor errors
2014-12-10 12:35:31 -03:00
Esteban Ordano ea17a6ace1 Add a preconditions module, and refactor errors
100% code coverage for the preconditions module.

Usage:
```
$.checkState(something === anotherthing, 'Expected something to be
anotherthing');
$.checkArgument(something < 100, 'something', 'must be less than 100');
$.checkArgumentType(something, PrivateKey, 'something'); // The third
argument is a helper to mention the name of the argument
$.checkArgumentType(something, PrivateKey); // but it's optional (will
show up as "(unknown argument)")
```
2014-12-10 11:56:38 -03:00
Manuel Aráoz 6727342202 Merge pull request #689 from eordano/feature/scriptOpcodeUpdate
Feature/script opcode update
2014-12-09 18:18:19 -03:00
Esteban Ordano fd531de123 Update opcode and script transactions 2014-12-09 17:53:30 -03:00
Manuel Aráoz 22b1193e32 Merge pull request #688 from eordano/feature/addressMethods
Add check functions to Address
2014-12-09 17:51:25 -03:00
Esteban Ordano 3551742fee Miscelaneus updates to docs and bufferreader/writer 2014-12-09 17:31:20 -03:00
Esteban Ordano 1816ba197f Add check functions to Address 2014-12-09 17:25:36 -03:00
Braydon Fuller c86f6d68a9 ECDSA: Remove console.log 2014-12-09 13:51:10 -05:00
Manuel Aráoz fb1978c5f5 Merge pull request #679 from eordano/feature/ecdsabackport
Backport changes to ECDSA from fullnode
2014-12-09 15:09:33 -03:00
Esteban Ordano 4879007bc7 Merge pull request #676 from braydonf/feature/block-handling-validation
Block: Added validation of proof of work, merkle tree and other interface changes. Closes #601
2014-12-09 13:54:31 -03:00
Esteban Ordano 4e9e89cdbf Move license notes to LICENSE 2014-12-09 13:46:14 -03:00
Esteban Ordano 736bcd6bd4 Backport changes to ecdsa from fullnode 2014-12-09 12:01:52 -03:00
Esteban Ordano f8397a617e Add option to create private key from hex 2014-12-09 11:40:30 -03:00
Esteban Ordano baf6a24d23 Add ".publicKey" property to PrivateKey 2014-12-09 11:21:47 -03:00
Braydon Fuller 5d1da9802c Block: Added validation of proof of work, merkle tree and other interface changes. Closes #601 2014-12-08 14:51:43 -05:00
Manuel Aráoz 33715a994e Merge pull request #666 from braydonf/bug/public-key-validation
PublicKey: Add test to verify that both uncompressed an compressed keys validate.
2014-12-05 10:31:10 -03:00
Manuel Araoz 58b43345c0 add docs 2014-12-04 18:39:13 -03:00
Manuel Araoz 6c5198b743 fix a browser test 2014-12-04 15:38:46 -03:00
Manuel Araoz d19ad6f384 remove commented code 2014-12-04 15:10:19 -03:00
Manuel Araoz eaaab5c7d0 implement Script.buildScriptHashOut() 2014-12-04 15:06:56 -03:00
Manuel Araoz 4bca5316ea implement Script.buildDDataOut() 2014-12-04 15:06:56 -03:00
Manuel Araoz b87e687fd9 implement Script.buildPublicKeyHashOut() 2014-12-04 15:06:56 -03:00
Manuel Araoz 163925c754 implement Script.buildMultisigOut() 2014-12-04 15:06:56 -03:00
Manuel Araoz 7b54a53414 add Opcode.smallInt() 2014-12-04 15:06:56 -03:00
Manuel Araoz 4fae69807d change isOpReturn to isDataOut 2014-12-04 15:06:56 -03:00
Manuel Araoz d05aa27bed finish all tests 2014-12-04 15:06:56 -03:00
Braydon Fuller 012466d411 PublicKey: Remove compressed boolean from validation, not nessassary. 2014-12-04 13:06:10 -05:00
Braydon Fuller 64c0d5f942 Payment Protocol: Restore and reorganize files for payment protocol. 2014-12-04 10:43:40 -05:00
Esteban Ordano d29d8d267d Add message to stack 2014-12-03 11:49:33 -03:00
Esteban Ordano 121b9fc090 Fixes issues with errors 2014-12-03 10:06:44 -03:00
Manuel Araoz ef8f1eabd2 add script.isStandard() 2014-12-02 14:20:58 -03:00
Manuel Araoz c4cc6ba56d fix tests with new script api 2014-12-02 14:20:58 -03:00
Manuel Araoz 87c40193b9 add pubkey in pubkey out script types 2014-12-02 14:20:58 -03:00
Manuel Araoz 3e2bcaa297 more verbose invalid script error 2014-12-02 14:20:58 -03:00
Manuel Araoz ed0fc6298c fix classify tests 2014-12-02 14:20:58 -03:00
Manuel Araoz 7d9151abc6 fix classify tests 2014-12-02 14:20:58 -03:00
Manuel Araoz 293a3299d4 add classify tests 2014-12-02 14:20:58 -03:00
Manuel Araoz 72b5dcc6af add Script.isMultisigIn 2014-12-02 14:20:58 -03:00
Manuel Araoz 96e1451d28 add script.isMultisigOut 2014-12-02 14:20:58 -03:00
Manuel Araoz 350816ad40 opcode refactor: isSmallIntOp 2014-12-02 14:20:58 -03:00
Manuel Araoz 4a6755d0d1 add Script#prepend() 2014-12-02 14:20:57 -03:00
Manuel Araoz ebf97aa4bb fix condition style again 2014-12-02 14:20:02 -03:00
Manuel Araoz 94f1afbad7 fix tests 2014-12-02 14:20:02 -03:00
Manuel Araoz 98be01b207 fix conditional format 2014-12-02 14:20:02 -03:00
Manuel Araoz 66e96e5fa4 make tests pass with Script refactor 2014-12-02 14:20:02 -03:00
Manuel Araoz 87f6651554 initial Script refactor 2014-12-02 14:20:02 -03:00
Braydon Fuller 3fc12e87d7 Merge pull request #648 from braydonf/ref/default-networks
Networks: Consistency of network reference and fix hardcoded value
2014-12-02 11:12:20 -05:00
Braydon Fuller 968f9936d8 Networks: Add mainnet alias 2014-12-02 10:55:25 -05:00
Braydon Fuller d5d88287cd Networks: Consistency of network reference for 'livenet', and removed hardcoded value. 2014-12-02 10:48:21 -05:00
Esteban Ordano 3dbb35a708 Fixes build, add "mainnet" again and fixes uri 2014-12-02 12:40:42 -03:00
Esteban Ordano 2b866a8460 Merge pull request #630 from braydonf/feature/immutable
Immutable Address, PublicKey and PrivateKey
2014-12-02 12:17:03 -03:00
Esteban Ordano 3d56ed3b4d Merge pull request #637 from braydonf/feature/public-key-to-address
PublicKey: Added toAddress prototype. Closes #599
2014-12-02 12:16:29 -03:00
Esteban Ordano 7682cfa359 Merge pull request #644 from braydonf/ref/default-network
Default the network, if not specified, to `networks.defaultNetwork`. Closes #559
2014-12-02 12:16:11 -03:00
Braydon Fuller b91b0fe4a5 PrivateKey: Use defaultNetwork if not specified 2014-12-01 18:10:18 -05:00
Braydon Fuller eb72310a62 Address: Use defaultNetwork if network is not specified 2014-12-01 18:07:39 -05:00
Braydon Fuller 6e36baebc6 Tests: Enable tests for network, include defaultNetwork, check each constant, build browser tests before running to make sure it's up-to-date 2014-12-01 17:55:57 -05:00
Braydon Fuller 4adf1fcb14 Network: Replaced all instances of mainnet with livenet for consistency 2014-12-01 17:31:39 -05:00
Yemel Jardi 9cd9eeba1f convert amout to satoshis 2014-12-01 17:36:52 -03:00
Yemel Jardi db4561f834 Add documentation 2014-12-01 17:18:10 -03:00
Yemel Jardi c9951be2dc Base URI class and tests 2014-12-01 17:18:10 -03:00
Yemel Jardi 80937362be Address constructor allows an address instance 2014-12-01 17:17:10 -03:00
Manuel Aráoz 1175c475a2 Merge pull request #627 from yemel/feature/unit-util
Utility for unit conversion
2014-12-01 16:17:17 -03:00
Braydon Fuller b06866f86f PublicKey: Added toAddress prototype. Closes #599 2014-12-01 14:15:59 -05:00
Yemel Jardi ab517cae9c refactor double quote 2014-12-01 16:02:28 -03:00
Yemel Jardi 3208ca2a44 Allow creating instance without new 2014-12-01 16:02:06 -03:00
Braydon Fuller 3298a01498 Immutable Address, PublicKey and PrivateKey 2014-12-01 12:44:32 -05:00
Yemel Jardi d978160ddb Utility for unit conversion 2014-12-01 12:33:45 -03:00
Braydon Fuller 9a76bf30ff Crypto/Point: Added test coverage and documentation, and refactored validation 2014-12-01 10:14:36 -05:00
Esteban Ordano 865a69f6f2 add testing for key cache 2014-12-01 10:00:46 -03:00
Esteban Ordano 13fd2592fc Add autogenerated errors 2014-11-30 09:47:44 -03:00
Esteban Ordano 803027353a Change errors 2014-11-30 09:47:44 -03:00
Esteban Ordano 94f3f02210 Add missing javadocs 2014-11-30 09:47:44 -03:00
Esteban Ordano a2a51ecc0c Fix style: move each static function to an appropiate namespace 2014-11-30 09:47:44 -03:00
Esteban Ordano 53900f3196 Add cache to derivation 2014-11-30 09:47:44 -03:00
Esteban Ordano 4c0769fa09 100% test coverage on hdpublickey 2014-11-30 09:47:44 -03:00
Esteban Ordano edc5b24d69 100% test coverage for HDPrivateKey 2014-11-30 09:47:44 -03:00
Esteban Ordano 950ea6ed1a Add public key 2014-11-30 09:47:44 -03:00
Esteban Ordano ad74b549a1 Fixes interfaces 2014-11-30 09:47:44 -03:00
Esteban Ordano 5728c30371 Add tests 2014-11-30 09:47:44 -03:00
Esteban Ordano b89bdd19f8 Add HDPrivateKey class 2014-11-30 09:47:44 -03:00
Manuel Araoz 1f3d7d9872 move Signature to crypto/ 2014-11-27 16:42:44 -03:00
Braydon Fuller 95b489c306 JSDoc: Update Address, PublicKey and PrivateKey so that they are documented. 2014-11-26 14:21:45 -05:00
Esteban Ordano 0695cda651 fix jsdoc 2014-11-26 12:56:43 -03:00
Esteban Ordano 4b201a8db1 Replace grunt with gulp 2014-11-25 21:26:52 -03:00
Esteban Ordano 73265d9089 Refactor network.js 2014-11-25 20:39:43 -03:00
Braydon Fuller a50655c7d3 Merge branch 'feature/keys-interface-rename-tests' into feature/keys-interface-rename 2014-11-25 17:38:24 -05:00
Braydon Fuller 747b14dc2e Merge branch 'v0.8' into feature/keys-interface-rename 2014-11-25 17:37:24 -05:00
Braydon Fuller 7de28610a5 Keys: Fix browser data types 2014-11-25 15:30:25 -05:00
Braydon Fuller 2a2dc8196d Crypto: Update ECDSA with to use PrivateKey and PublicKey 2014-11-25 15:10:22 -05:00
Braydon Fuller f6e610dd28 Merge branch 'bug/recursive-tests' into feature/keys-interface-rename-tests 2014-11-25 14:55:35 -05:00
Braydon Fuller cd4583f954 Encodings: Updated Base58 for the latest version. 2014-11-25 14:40:43 -05:00
Braydon Fuller 8c4301cb0a Tests: Updated tests to run from sub-directories and fixed crypto and encoding related missing updates. 2014-11-25 14:20:43 -05:00
Braydon Fuller 85ce140aeb Keys: Renamed Privkey to PrivateKey and Pubkey to PublicKey 2014-11-25 13:21:53 -05:00
Braydon Fuller 35d0cbc5a6 Keys: Modified interface of Pubkey and Privkey so that an instance can be relied upon as valid. 2014-11-25 12:30:52 -05:00
Manuel Aráoz f4bf23be82 Merge pull request #573 from braydonf/ref/remove-keypair
Keys: Refactored to use Pubkey and Privkey and removed Keypair
2014-11-25 12:22:38 -03:00
Manuel Aráoz b97e448af6 Merge pull request #575 from braydonf/ref/package-update-2014-11
Package: Updated to include the latest versions of dependencies
2014-11-25 11:45:40 -03:00
Braydon Fuller deb54c5a20 Address: Return new instance if `this` isn't already instantiated. 2014-11-24 15:47:30 -05:00
Braydon Fuller cfb32f7fc8 Package: Updated to include the latest versions of dependencies 2014-11-24 15:20:14 -05:00
Braydon Fuller 23c1ed3599 Keys: Refactored to use Pubkey and Privkey and removed Keypair 2014-11-24 12:53:16 -05:00
Braydon Fuller 9863b123c0 Address: Increase test coverage 2014-11-23 15:34:19 -05:00
Braydon Fuller 3c9cc23501 Address: Improved error messages and type, and added inspect prototype for console output. 2014-11-21 22:20:44 -05:00
Braydon Fuller 5ff349758c Address: Fix Buffer data recognition in browsers 2014-11-21 19:58:47 -05:00
Braydon Fuller 0df97a42fe Address: Fix indentation, typos and simplify isValid 2014-11-21 19:02:58 -05:00
Braydon Fuller 8f32063375 Address: Add missing semicolons 2014-11-21 14:31:34 -05:00
Braydon Fuller 90341f2ab6 Address: Modified interface so that any instance of Address can be assumed to be valid. 2014-11-21 14:18:31 -05:00
Manuel Araoz 4508fb6765 fix references to encoding 2014-11-21 12:54:56 -03:00
Manuel Araoz deee8c6887 refactor protocol->encoding 2014-11-21 11:43:37 -03:00
Manuel Araoz e0340213fe remove KDF 2014-11-21 10:43:12 -03:00
Manuel Araoz 5440baad83 fix tests for random 2014-11-20 18:46:43 -03:00
Manuel Araoz f0a4aebdfb reorder tests 2014-11-20 18:08:31 -03:00
Manuel Araoz a9d029341d remove extras 2014-11-20 13:31:51 -03:00
Manuel Araoz 044337a30f use strict to core 2014-11-20 12:56:35 -03:00
Manuel Araoz ca9b8d8f7b use strict to protocol 2014-11-20 12:52:32 -03:00
Manuel Araoz 56ca8a20c1 use strict to protocol 2014-11-20 12:23:46 -03:00
Manuel Araoz 7650b35482 use strict to extras 2014-11-20 12:18:08 -03:00
Manuel Araoz 2bf1ed8f34 use strict to crypto 2014-11-20 12:16:27 -03:00
Manuel Araoz 6f2913eed4 fix references 2014-11-20 11:50:23 -03:00
Manuel Araoz 481aa04cdb add comment to identity.js 2014-11-20 11:44:46 -03:00
Manuel Araoz 5dd3eae34f move more files 2014-11-19 12:19:10 -03:00
Manuel Araoz cebd3aaa18 move files 2014-11-19 11:57:07 -03:00
Manuel Araoz 54fa31c85d remove crypto 2014-11-18 18:59:31 -03:00
Braydon Fuller 0cd68b5384 removed unused module references 2014-11-18 11:16:39 -05:00
Braydon Fuller 8ca49fb523 update to include new version of bn.js and elliptic that include hex padding 2014-11-03 16:53:14 -05:00
Eric Martindale 14748ae2b5 Make more tests pass with Identity(). 2014-10-06 17:54:20 -04:00
Eric Martindale 4b6e9aaf03 Improve tests. 2014-10-06 15:40:30 -04:00
Eric Martindale dac2acc743 Clean example for full identities. 2014-10-06 14:00:03 -04:00
Eric Martindale 75cf4c4f9a tidy up identity class, add tests. 2014-10-02 22:27:18 -04:00
Eric Martindale 5fc9721647 Add support for identities. 2014-10-02 15:08:44 -04:00
Eric Martindale f01ebd97d2 Buffers, identities, and randomNumbers. 2014-10-01 21:08:06 -04:00
Eric Martindale e8d4786e48 CLASSICAL INHERITANCE IS FOR THE DOGS. 2014-10-01 19:20:03 -04:00
Eric Martindale 541196cb5a Re-implement addresses. 2014-10-01 16:28:57 -04:00
Eric Martindale 5f60d26a2b Migrate from Address() to Identity(). 2014-10-01 16:26:09 -04:00
Ryan X. Charles f54edfb618 Varint(BN()) convenience
...and add some tests for the various constructor conveniences
2014-09-23 22:19:01 -07:00
Ryan X. Charles 8e85eba08b pushin, pushout
Add convenience methods for adding new inputs and outputs.
2014-09-23 22:09:41 -07:00
Ryan X. Charles c07d509623 initialize transaction
In order to add convenience methods to a transaction, such as pushing new
inputs and outputs, we need to first have the notion of an initialized
transaction, which is actually not blank. An initialized transaction just has
default values for everything, such as no inputs and no outputs, and default
version and nlocktime.
2014-09-23 22:01:30 -07:00
Ryan X. Charles 729049a7da Add error for when pushdata is exceptionally large 2014-09-23 21:37:18 -07:00
Ryan X. Charles b37e39abca Script().writeXX convenience methods
Script().writeOp('OP_CHECKMULTISIG'), or...
Script().writeOp(174), or...
Script().writeBuffer([push data buffer]), or...
Script().write([op string, number, or push data buffer])

These convenience methods let you easily write a script.
2014-09-23 21:28:03 -07:00
Ryan X. Charles 4f71535869 StealthTx
For spotting transactions to which you have the stealth key (or at least the
scan key) and creating transactions to a stealth address. So far it is only
partially working - you can see if a transaction is a stealth transaction (or
at least one of a limited kind of stealth transactions), and you can see that
you do not have the stealth key to spend one of these transactions. However, I
have not yet tested whether you can see a stealth transaction that you actually
have the key to. Also, it is not yet easy to spend to a stealth address.
2014-09-23 16:54:52 -07:00
Ryan X. Charles 4fabad21a1 get rid of obsolete 'bitcore' stealth addr format 2014-09-23 14:27:48 -07:00
Ryan X. Charles 22b87325d7 make Dark Wallet buffer/string formats the default
and rename the old functions to "bitcore buffer" and "bitcore string"
2014-09-23 14:27:48 -07:00
Ryan X. Charles 96df77429f add support for Dark Wallet-style addresses
These functions are prefixed DW which stands for Dark Wallet. The code for the
Dark Wallet address format can be found here:

https://github.com/darkwallet/darkwallet/blob/develop/js/util/stealth.js

Note that I deliberately support only the simplest possible format, which is
where there is only one payload pubkey and the prefix is blank. I should now go
back and replace my old toString, fromString, toBuffer, fromBuffer functions
with these Dark Wallet versions, since they are much more well-thought out than
mine.
2014-09-22 18:23:10 -07:00
Ryan X. Charles 9b8ce05b15 BufferWriter().toBuffer convenience method
It does the same thing as .concat(), but may be easier to remember, since the
rest of the library uses the ".toBuffer()" convention
2014-09-22 17:09:53 -07:00
Ryan X. Charles 792e8080c8 classify pubkeyhash and scripthash scripts
...both the "in" (ScriptSig) and "out" (ScriptPubkey)
2014-09-22 16:04:06 -07:00
Ryan X. Charles 6f92775b2c extra curly braces for code readability 2014-09-22 14:56:07 -07:00
Ryan X. Charles 5c7149aeab Stealthkey toJSON/fromJSON 2014-09-22 14:45:41 -07:00
Ryan X. Charles d6e3266179 toJSON/fromJSON for privkey, pubkey, keypair 2014-09-22 13:55:40 -07:00
Ryan X. Charles f3614e4a90 Key -> Keypair
...that is what is called everywhere else.
2014-09-22 13:14:39 -07:00
Ryan X. Charles e984736736 allow bufs in constructors
For Transaction, Block and Blockheader. This is a convenience so if you happen
to have the buffer for one of these, you can make a new one like this:

Transaction(txbuf);

Rather than having to do this:

Transaction().fromBuffer(txbuf);
2014-09-22 13:07:39 -07:00
Ryan X. Charles e6a424303e remove unused base58check dependency 2014-09-22 12:51:18 -07:00
Ryan X. Charles 1bda566679 stealth address to/from JSON 2014-09-22 12:48:13 -07:00