Commit Graph

804 Commits

Author SHA1 Message Date
Yemel Jardi
e7839d9ba2 Add from/to Fiat methods to Unit class 2014-12-25 19:04:03 -03:00
Manuel Araoz
0914624860 fix releaser script 2014-12-24 11:44:13 -03:00
Manuel Aráoz
6ea9c7b005 Merge pull request #842 from eordano/feature/G7/hdprivkey
Adding G7 methods to HDPrivateKey
2014-12-23 12:59:51 -03:00
Esteban Ordano
c3a178061c Adding G7 methods to HDPrivateKEy 2014-12-23 12:34:38 -03:00
Esteban Ordano
2006b3aae2 Add G7 methods to HDPublicKey 2014-12-23 12:23:35 -03:00
Manuel Araoz
225ade6c7a return comment to deterministicK 2014-12-22 17:33:00 -03:00
Manuel Araoz
aa6ecfd79b hash 100% coverage 2014-12-19 19:23:30 -03:00
Manuel Araoz
686bc091ba remove dead code 2014-12-19 18:54:10 -03:00
Manuel Araoz
fb57a60666 fix all tests 2014-12-19 18:53:21 -03:00
Manuel Araoz
6c518f1f45 refactoring interpreter 2014-12-19 18:28:52 -03:00
Manuel Araoz
370f69df88 refactor BN and ECDSA 2014-12-19 17:23:53 -03:00
Manuel Aráoz
56591db68d Merge pull request #831 from eordano/review/block
Coverage for block and blockheader
2014-12-19 17:23:49 -03:00
Esteban Ordano
4980f7a646 Test coverage: last branch untested from PublicKey 2014-12-19 16:44:49 -03:00
Esteban Ordano
2a084e641c Coverage for block and blockheader
* JSDocs where already good, written by @braydonf
2014-12-19 16:37:57 -03:00
Manuel Aráoz
58f68ba8d2 Merge pull request #829 from eordano/review/keys
PrivateKey, PublicKey, Network linted
2014-12-19 16:24:47 -03:00
Esteban Ordano
c15dafc29e Merge pull request #822 from eordano/review/jsdoc-address
Minor improvements on Address
2014-12-19 16:19:08 -03:00
Esteban Ordano
36e87d8822 PrivateKey, PublicKey, Network linted
* Added 100% test coverage for them also
2014-12-19 16:18:05 -03:00
Esteban Ordano
1ec4c7f512 Minor improvements on Address
* Update JSDocs
* Branch coverage 100%
* Removed duplicated test
* Updated names of tests
2014-12-19 15:41:20 -03:00
Manuel Aráoz
b69997711b Merge pull request #823 from eordano/review/jsdoc-unit
Review Unit class
2014-12-19 15:27:55 -03:00
Manuel Aráoz
bd2e326708 Merge pull request #824 from eordano/review/jsdoc-uri
Lint and cover URI completely
2014-12-19 15:26:56 -03:00
Manuel Aráoz
ccf9527bd7 Merge pull request #827 from eordano/lint/interpreter
Lint script/interpreter
2014-12-19 15:26:35 -03:00
Esteban Ordano
a379876e0b Delete lint errors from autogenerated file 2014-12-19 14:21:48 -03:00
Esteban Ordano
490279acb0 Lint script/interpreter 2014-12-19 14:17:58 -03:00
Esteban Ordano
b5f8188a1f Lint and cover URI completely 2014-12-19 13:41:54 -03:00
Esteban Ordano
be599e5a1b Review Unit class
* Add 100% code coverage
* Add custom error code
* Linted source and test
* More descriptive test messages
2014-12-19 13:18:22 -03:00
Manuel Aráoz
85169a3874 Merge pull request #812 from eordano/feature/safeSerialize
Modify Transaction Interface
2014-12-19 10:37:24 -03:00
Esteban Ordano
99db72ba90 Add uncheckedAddInput function
* For internal usage: for example, testing Script.Interpreter
2014-12-19 10:30:20 -03:00
Esteban Ordano
9a73338c91 Add tests for changes to Transaction interface 2014-12-18 20:38:19 -03:00
Braydon Fuller
6d42e01718 Fix formatting issue with examples 2014-12-18 17:07:01 -05:00
Esteban Ordano
e5631b1a69 Modify transaction interface
* Add checks when serializing
* Add default _estimateSize to generic inputs
* Fix multisig size estimation
* Change _addOutput to addOutput
* Add addInput and using that internally
* Split `getFee` out from `_updateChangeOutput`
2014-12-18 14:09:44 -03:00
Esteban Ordano
24dc84d614 Dont lose sighash when signing with multiple keys 2014-12-18 02:19:39 -03:00
Esteban Ordano
de4413745d Fix missing disambiguation 2014-12-18 01:43:04 -03:00
Esteban Ordano
a352937566 Fix transaction order 2014-12-18 01:42:45 -03:00
Esteban Ordano
6be0c047b7 Update index for the documentation 2014-12-17 17:40:15 -03:00
Manuel Araoz
3dd86446e0 add Interpreter docs and refactor a bit 2014-12-17 17:25:00 -03:00
Braydon Fuller
7d15b2bf0f Private Key: Fix bug with tests and missing "new" 2014-12-17 12:34:21 -05:00
Manuel Aráoz
43264616a6 Merge pull request #788 from eordano/feature/buffertest
Add tests for bufferutils
2014-12-17 12:57:34 -03:00
Esteban Ordano
12cac0e33d Fix tests on browsers: need to add Buffer exception 2014-12-17 12:38:56 -03:00
Esteban Ordano
c793559fa9 Fix bug on HD*Keys 2014-12-17 12:31:04 -03:00
Manuel Aráoz
a0827d662f Merge pull request #785 from yemel/feature/json-rpc
JSON RPC
2014-12-17 12:30:25 -03:00
Esteban Ordano
afb5b6971f Add tests for bufferutils 2014-12-17 12:10:02 -03:00
Manuel Aráoz
9f51b1b4ce Merge pull request #772 from braydonf/docs/block
Block: Updated documentation, and changed to use consistent naming.
2014-12-17 11:58:22 -03:00
Esteban Ordano
65ec886008 Merge pull request #783 from braydonf/tests/paymentprotocol
Payment Protocol: Added tests and misc formatting. Closes #697
2014-12-17 07:39:13 -03:00
Yemel Jardi
d7b8b370f1 RPC: Refactor, documentation and tests 2014-12-17 03:34:22 -03:00
Braydon Fuller
bf5f770a67 Payment Protocol: Added tests and misc formatting 2014-12-16 23:40:40 -05:00
Yemel Jardi
4173f4b49e include old files 2014-12-17 01:35:26 -03:00
Esteban Ordano
9f442e8ec4 Merge pull request #777 from maraoz/add/tx_invalid/tests
add tx_invalid.json tests
2014-12-16 23:13:59 -03:00
Manuel Aráoz
bcae1101fa Merge pull request #771 from eordano/feature/change
Add Fee Estimation and Change Address to Transaction
2014-12-16 22:50:53 -03:00
Manuel Aráoz
902d5de6bf Merge pull request #775 from eordano/feature/addressmultisig
Add capability to instantiate an Address from public keys and a threshold
2014-12-16 22:46:58 -03:00
Manuel Araoz
84deec297a add tx_invalid tests 2014-12-16 22:40:59 -03:00
Esteban Ordano
f7f7d147c6 Add change features 2014-12-16 22:39:25 -03:00
Manuel Aráoz
ef9b02c94d Merge pull request #776 from eordano/feature/countMissingSignatures
Add count for missing signatures
2014-12-16 22:37:16 -03:00
Esteban Ordano
5f5cf15241 Add capability to instantiate an Address from public keys and a threshold 2014-12-16 22:36:50 -03:00
Esteban Ordano
ce8927690f Add count for missing signatures 2014-12-16 22:30:13 -03:00
Esteban Ordano
ce94626908 Move: Script and Interpreter into subfolder 2014-12-16 21:11:36 -03:00
Braydon Fuller
d86e718743 Block: Updated documentation, and changed to use consistent naming. 2014-12-16 18:19:27 -05:00
Manuel Araoz
cd00b3ebe5 tx_valid tests passing! 2014-12-16 18:47:58 -03:00
Manuel Araoz
b3be9461cf tx_valid tests passing! 2014-12-16 18:47:58 -03:00
Manuel Araoz
d56fb04575 add ScriptInterpreter#verify docs 2014-12-16 18:46:43 -03:00
Esteban Ordano
20fc304f44 Merge pull request #765 from maraoz/test/sig_noncanonical
add sig_noncanonical.json tests
2014-12-16 18:02:40 -03:00
Esteban Ordano
d4b8c4adc6 Remove globals 2014-12-16 17:30:43 -03:00
Esteban Ordano
4433bd422b Refactor gulpfile 2014-12-16 17:21:41 -03:00
Esteban Ordano
ed9a9f6da9 Fix wrong jsdocs 2014-12-16 17:21:41 -03:00
Manuel Araoz
c272412df2 add sig_noncanonical.json tests 2014-12-16 16:34:22 -03:00
Manuel Aráoz
e39543b730 Merge pull request #758 from eordano/fix/precondArgument
Fix #756: Preconditions Invalid Argument
2014-12-16 15:41:07 -03:00
Braydon Fuller
e3fa89ce62 PublicKey: Fix formatting issue for inspect 2014-12-16 12:25:01 -05:00
Esteban Ordano
1b19255fd1 Fix #756: Preconditions Invalid Argument 2014-12-16 13:52:25 -03:00
Manuel Araoz
3eba0bc546 address review comments 2014-12-16 13:33:57 -03:00
Manuel Araoz
7683d2c2ed fix post-rebase confilcts 2014-12-16 13:33:57 -03:00
Manuel Araoz
4fcc048311 script interpreting working 2014-12-16 13:33:57 -03:00
Manuel Araoz
49192a1ed7 style change to BufferUtil 2014-12-16 13:33:57 -03:00
Manuel Araoz
50dd4e8e66 fix all script validation tests, yay! 2014-12-16 13:33:56 -03:00
Manuel Araoz
4b68c3725d generalize script tests 2014-12-16 13:33:56 -03:00
Manuel Araoz
ddd11e908c all script_valid tests passing! 2014-12-16 13:33:56 -03:00
Manuel Araoz
0ddec23c02 fix some more tests 2014-12-16 13:33:56 -03:00
Manuel Araoz
a761ac91c2 some more passing tests 2014-12-16 13:33:56 -03:00
Manuel Araoz
73874ae873 import Sighash 2014-12-16 13:33:56 -03:00
Manuel Araoz
9aa6152f25 trying to fix OP_CHECKSIG script evaluation 2014-12-16 13:33:56 -03:00
Manuel Araoz
6a0512e1bf pass some more tests 2014-12-16 13:33:56 -03:00
Manuel Araoz
401b5b1b4a Pubkey -> PublicKey 2014-12-16 13:33:56 -03:00
Manuel Araoz
cf48899a3a make creation methods class methods 2014-12-16 13:33:56 -03:00
Manuel Araoz
c888c3baa7 adding some signature methods for script interpreting 2014-12-16 13:33:56 -03:00
Manuel Araoz
3de71f8558 refactors and fixes for script interpreter 2014-12-16 13:33:56 -03:00
Manuel Araoz
c64a38a54a trying to fix ScriptInterpreter 2014-12-16 13:33:56 -03:00
Manuel Aráoz
7064a07f99 Merge pull request #744 from braydonf/feature/transport-peer-pool
Transport: Added a peer pool to maintain a set of connected peers. Closes #724
2014-12-16 12:44:56 -03:00
Braydon Fuller
709cda2618 Transport/Pool: Mark internal functions 2014-12-16 03:30:57 -05:00
Braydon Fuller
b403cc3770 Transport/Pool: Added tests to check that new addrs are added 2014-12-16 02:02:06 -05:00
Manuel Aráoz
e52be70ed0 Merge pull request #752 from eordano/review/doc
Update docs and minor changes to codebase
2014-12-16 03:09:26 -03:00
Esteban Ordano
9d0b5e04fe Update Signature, URI, Unit 2014-12-16 03:02:05 -03:00
Esteban Ordano
63f1d307fa Reviewing docs 2014-12-16 02:45:23 -03:00
Braydon Fuller
e04cb76854 Transport/Pool: Use sinon for tests. 2014-12-15 21:43:10 -05:00
Braydon Fuller
1a1d63321a Transport: Added a peer pool to maintain a set of connected peers 2014-12-15 21:43:10 -05:00
Braydon Fuller
6f37520a58 Merge pull request #750 from eordano/test/publicWIF
Add `network` property to PublicKey
2014-12-15 18:02:03 -05:00
Braydon Fuller
c7edfdd2b1 Merge pull request #751 from eordano/fix/bufferReadNoLength
Remove calls to read() with no arguments
2014-12-15 17:56:56 -05:00
Esteban Ordano
5bed12ebe3 Remove calls to read() with no arguments 2014-12-15 19:37:19 -03:00
Esteban Ordano
48ce24dfbe Fix tests to allow network on public keys 2014-12-15 19:28:59 -03:00
Esteban Ordano
d1a590dc89 Merge pull request #719 from yemel/refactor/remove-compressed
Remove compressed argument from PrivateKey and PublicKey constructors
2014-12-15 18:49:39 -03:00
Esteban Ordano
de4d2884c7 Modify Transaction to use Multisig
* Allow `Script#add` to add a Script causing concatenation of opcodes
* Add `Script#equals` to compare scripts
* Add `Script#fromAddress`
* Drop `_payTo` methods
* Add `Script.buildP2SHMultisigIn`

Greatly simplifying the internal transaction object
2014-12-15 18:19:54 -03:00
Esteban Ordano
1535805f1c Add PublicKeyHashInput class 2014-12-15 18:19:39 -03:00
Esteban Ordano
af43228daf Add PublicKeyHashInput and ScriptHashInput.
Remove `_outpoints`, `_utxos` from Transaction, as that info
can be efficiently retrieved from the inputs
2014-12-15 18:19:39 -03:00
Manuel Aráoz
264a239e5a Merge pull request #737 from braydonf/bug/to-object
Transaction:  `toJSON` / `fromJSON` tests
2014-12-15 17:06:08 -03:00
Yemel Jardi
428bcaf4c9 Remove compressed argument from private key and public key constructors 2014-12-15 14:48:17 -03:00
Manuel Aráoz
a2b1554a44 Merge pull request #738 from braydonf/tests/base58-keys
Tests: Added bitcoind base58 key json data and tests
2014-12-15 12:42:10 -03:00
Braydon Fuller
96c7812ed1 PrivateKey: Lodash to check if undefined, and made tests not random (T2) 2014-12-15 10:20:38 -05:00
Braydon Fuller
b13c4fb0c9 Added inspect prototype G5 2014-12-14 15:13:01 -05:00
Braydon Fuller
920f25b58e Tests: Added bitcoind base58 key data and tests 2014-12-13 16:10:41 -05:00
Braydon Fuller
6f6d568661 Transaction: toNumber/fromNumber to set satoshis 2014-12-13 15:10:51 -05:00
Braydon Fuller
ad4bc9324f Transaction: Use Script toString for transaction JSON output 2014-12-13 14:54:07 -05:00
Braydon Fuller
b544b0594d Added test to check that Transaction fromJSON could initialize from toJSON, and fixed a bug. 2014-12-13 14:54:07 -05:00
Braydon Fuller
f43c2f9aa3 Fixed bug, toObject should use other object's toObject 2014-12-13 14:54:07 -05:00
Braydon Fuller
dee30c749a Unit: Fixed bug, stringified toJSON output 2014-12-12 20:08:46 -05:00
Braydon Fuller
e4cf84519d BN: Remove toJSON and fromJSON methods from BN, as they are equivalent to toString and fromString 2014-12-12 19:06:06 -05:00
Braydon Fuller
002eb3dcf5 Transaction: Added toObject method and changed toJSON to return a string 2014-12-12 19:03:14 -05:00
Braydon Fuller
cddd55afc4 URI/Unit: Added toObject method and changed toJSON to return a string 2014-12-12 18:53:27 -05:00
Braydon Fuller
c0bbf96dc1 Keys: Added toObject method and changed toJSON to return a string 2014-12-12 18:47:15 -05:00
Braydon Fuller
1c0caac8c3 HDKeys: Added toObject method and changed toJSON to return a string 2014-12-12 18:39:16 -05:00
Braydon Fuller
19a17017a9 Block: Added toObject method and changed toJSON to return a string 2014-12-12 18:34:43 -05:00
Braydon Fuller
354c03987a Address: Added toObject method and changed toJSON to return a string 2014-12-12 18:22:31 -05:00
Braydon Fuller
0e7f5e89f2 Fixed issue with js util naming 2014-12-12 17:54:48 -05:00
Manuel Aráoz
04fba31293 Merge pull request #721 from braydonf/standardize-json
Standardize toJSON and related
2014-12-12 19:19:08 -03:00
Braydon Fuller
46a9a6d83c Opcode: Added toBuffer and fromBuffer methods 2014-12-12 15:33:40 -05:00
Braydon Fuller
4ddf3d117c Keys: Modified and added standardized toJSON/fromJSON prototypes 2014-12-12 13:39:49 -05:00
Braydon Fuller
93502d1523 Fix naming 2014-12-12 12:09:15 -05:00
Braydon Fuller
683ac93c0b Fix utility naming issue 2014-12-12 12:06:39 -05:00
Braydon Fuller
162438d111 Block: Change utility naming 2014-12-12 12:06:39 -05:00
Braydon Fuller
3276236cce Consistent names for utilities 2014-12-12 12:06:39 -05:00
Braydon Fuller
94cc10b1a3 Changed *Json to *JSON and returned an object so that methods can be called from other toJSON methods without the double-stringification issue. 2014-12-12 12:06:39 -05:00
Braydon Fuller
7aaee6466f Fix spacing formatting issues 2014-12-12 11:24:14 -05:00
Braydon Fuller
32ac9bb63e Change utility naming 2014-12-12 11:05:22 -05:00
Braydon Fuller
1858766627 Standardized toJSON, fromJSON, toString and fromString interfaces 2014-12-12 09:51:59 -05:00
Manuel Aráoz
d6caab69ca Merge pull request #720 from braydonf/feature/immutable-opcode
Opcode: Modify `from` methods to be static, and an instance be immutable.
2014-12-12 11:19:30 -03:00
Esteban Ordano
40932f39ce Merge pull request #717 from braydonf/feature/hdkeys-immutable
HDKeys: Modified to have immutable properties
2014-12-12 10:23:26 -03:00
Braydon Fuller
77be24a52f Bump 2014-12-11 22:27:37 -05:00
Braydon Fuller
6bb9990a2b Opcode: JS-Beautify 2014-12-11 20:37:54 -05:00
Braydon Fuller
1b2e9728ce Opcode: Modify from methods to be static, and an instance be immutable. 2014-12-11 20:19:54 -05:00
Braydon Fuller
c73c56f938 HDKeys: Modified to have immutable properties 2014-12-11 15:37:31 -05:00
Manuel Aráoz
d1b4c25c6f Merge pull request #713 from braydonf/ref/private-key-network
PrivateKey: Add docs and refactor to use network object
2014-12-11 17:20:24 -03:00
Manuel Araoz
d3b761fc7c Opcode('*').toNumber() -> Opcode.* 2014-12-11 16:19:22 -03:00
Manuel Araoz
bb8373ead7 remove script_interpreter for partial commit 2014-12-11 16:19:22 -03:00
Manuel Araoz
53f6a31e73 refactor script 2014-12-11 16:19:22 -03:00
Manuel Araoz
81f1469f9a add preconditions to opcode 2014-12-11 16:19:21 -03:00
Manuel Araoz
f5b7f73d09 fixing tests for new script internals 2 2014-12-11 16:19:21 -03:00
Manuel Araoz
016bc6e3ed fixing tests for new script internals 2014-12-11 16:19:21 -03:00
Manuel Araoz
898bdac05f working towards script interpreting 2014-12-11 16:19:21 -03:00
Manuel Araoz
7ee9601d8a starting with script_interpreter 2014-12-11 16:19:21 -03:00
Esteban Ordano
e1f1f4b6f6 Hotfix: Remove console.log 2014-12-11 16:11:47 -03:00
Esteban Ordano
005cf074fd Merge pull request #696 from yemel/feature/transport
P2P Peer Connections
2014-12-11 16:10:18 -03:00
Braydon Fuller
5b0bedee6c PrivateKey: Fixed documentation 2014-12-11 13:29:21 -05:00
Braydon Fuller
d4d3d4ab4a PrivateKey: Add documentation and refactor to use network object as a parameter. 2014-12-11 13:21:09 -05:00
Manuel Aráoz
b89f15bcf1 Merge pull request #705 from braydonf/ref/address-network
Address: Documentation and Network Refactor
2014-12-11 13:22:04 -03:00
Yemel Jardi
9b6183b083 Improving code thanks to jshint 2014-12-11 13:11:55 -03:00
Yemel Jardi
ee169a80af Replace buffertools 2014-12-11 12:45:24 -03:00
Braydon Fuller
56161676c3 Address: Change discoverMeta to classifyVersion and add a general address validation example 2014-12-11 10:42:10 -05:00
Yemel Jardi
c30f656540 Remove custom hex function at networks.js 2014-12-11 11:57:14 -03:00
Yemel Jardi
63022783dd Add developer guide section 2014-12-11 11:31:52 -03:00
Esteban Ordano
ef49dda0fd Move input to subfolder before refactor
Gonna inherit from it on two subclasses: "P2SH Input" and "P2PKH Input"

They'll have a `addSignature` method, to deal with new signatures,
a `clearSignatures`, in case the outputs change and the signatures get
invalidated, `countMissingSignatures`, and a reference to the UTXO
they'll be spending, so all logic regarding "p2sh mapping" gets to
be in here and the Transaction class is not polluted.
2014-12-11 09:18:20 -03:00
Braydon Fuller
3b061b057f Address: Added documentation and refactored to accept both a string and network object. 2014-12-10 23:44:17 -05:00
Yemel Jardi
57968674ef Add a better check on networkMaps 2014-12-10 18:09:27 -03:00
Yemel Jardi
228e7e214a Add tests 2014-12-10 18:09:27 -03:00
Yemel Jardi
2d4b26a6a1 Add missing serializations 2014-12-10 18:09:27 -03:00
Yemel Jardi
56907c1a3b Add missing argument 2014-12-10 18:09:27 -03:00
Yemel Jardi
9ce450c142 Remove old tests 2014-12-10 18:09:27 -03:00
Yemel Jardi
30740be5df Remove old files 2014-12-10 18:09:27 -03:00
Yemel Jardi
8eca7285e0 Refactor and documentation 2014-12-10 18:09:26 -03:00
Yemel Jardi
5dc124a438 Add inheritance to messages and expose them as a module 2014-12-10 18:09:26 -03:00
Yemel Jardi
68f50b2f61 Add messages serialization 2014-12-10 18:09:26 -03:00
Yemel Jardi
a9e54a7856 Progress on sending and receiving messages 2014-12-10 18:09:26 -03:00
Yemel Jardi
a1e8f3c596 Add transport/peermanager class 2014-12-10 18:09:26 -03:00
Yemel Jardi
4faa1a4a46 Add transport/peer class 2014-12-10 18:09:26 -03:00
Yemel Jardi
f1d2009418 Add transport/connection class 2014-12-10 18:09:26 -03:00
Manuel Araoz
ec464681fe add sorting to Script#buildMutlisigOut() 2014-12-10 16:46:20 -03:00
Esteban Ordano
1579eed9af Consistency with "id", "hash", and "_getHash" 2014-12-10 15:20:42 -03:00
Esteban Ordano
0c28bc1786 Split buildPKH arguments, add Copy constructor on publickey 2014-12-10 12:46:21 -03:00
Esteban Ordano
5c974a8ef2 Refactor transaction to match new API
* Refactor transaction into a different subfolder
* Added a lot of tests for sighash and transaction serialization (from
  reddit's and Ryan X. Charles' `fullnode`)
* Drop "only" from sighash tests and consolidate logs
2014-12-10 12:44:30 -03:00
Manuel Araoz
b61bd6f76a add Script#isPushOnly() 2014-12-10 12:39:09 -03:00
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
Ryan X. Charles
27fbdb42ad isOpReturn
standard OP_RETURN scripts contain either just an OP_RETURN or an OP_RETURN
followed by a single pushdata OP with not more than 40 bytes.
2014-09-19 21:59:19 -07:00
Ryan X. Charles
cc3196085f add .hash() function for a block
This is the plain old hash, which is a double sha256. The id of a block is the
reverse of this.
2014-09-19 17:29:40 -07:00
Ryan X. Charles
aff3992ffb transaction hash and id
...the hash is the usual hash, and the id is the reverse of that, which is what
is usually graphically displayed by bitcoind.
2014-09-19 17:25:35 -07:00
Ryan X. Charles
40d17c5180 block id
The block id is the reverse of the double sha256 hash of the blockheader.
2014-09-19 17:08:44 -07:00
Ryan X. Charles
cfd509f859 make receivePubkey compatible with dark wallet
I had been using this formula for the receiveKeypair:

scanKeypair + payloadKeypair + sharedKeypair

However, Dark Wallet uses this formula:

payloadKeypair + sharedKeypair

It is not actually necessary to add the scanKeypair in order to have all the
features of stealth addresses, at least as far as I can tell. So in order to
bring my implementation closer to Dark Wallet's, I have removed the scanKeypair
from this calculation.
2014-09-19 14:32:32 -07:00
Ryan X. Charles
e11019a083 toJSON, fromJSON
Every object should have toJSON and fromJSON methods so you can have a reliable
way to store and retrieve objects.
2014-09-18 17:52:02 -07:00
Ryan X. Charles
f17d604e44 Address().fromHashbuf() convenience method
...useful for when you have the pubkeyhash, but not the version byte.
2014-09-18 15:18:53 -07:00
Ryan X. Charles
cf5b2f1250 varint -> vi canonical spelling 2014-09-17 16:48:23 -07:00
Ryan X. Charles
2caf7c6471 bn -> BN canonical capitalization 2014-09-17 16:08:42 -07:00
Ryan X. Charles
0212e4bd4c replace .buffer with .read 2014-09-17 15:49:45 -07:00
Ryan X. Charles
8e049b7244 smarter 2014-09-17 15:44:59 -07:00
Ryan X. Charles
6cee393c5d put brains in read 2014-09-17 15:43:15 -07:00
Ryan X. Charles
6e1dfd3003 allow bufferreader.read to specify length
...to be more symmetric with the write function of bufferwriter
2014-09-17 15:41:30 -07:00
Ryan X. Charles
7918f53f12 bnjs -> BN ... for consistency 2014-09-17 15:32:58 -07:00
Ryan X. Charles
aee8547093 add fromString method for library consistency 2014-09-17 15:32:14 -07:00
Ryan X. Charles
6494ca5076 convenience: varint -> vi 2014-09-17 15:27:12 -07:00
Ryan X. Charles
0eeba8eadb canonical BN notation 2014-09-17 15:22:52 -07:00
Ryan X. Charles
5f21059bf8 more convenient names 2014-09-17 15:20:01 -07:00
Ryan X. Charles
eb34a16511 more convenient name 2014-09-17 15:17:54 -07:00
Ryan X. Charles
9473bdf9b0 more convenient name 2014-09-17 15:15:56 -07:00
Ryan X. Charles
bd16eddf54 Key -> Keypair 2014-09-17 15:13:57 -07:00
Ryan X. Charles
7390b15f89 add set function to bip32 2014-09-17 15:11:16 -07:00
Ryan X. Charles
0641184e84 support string input in constructor 2014-09-17 15:02:11 -07:00
Ryan X. Charles
c41419b6ef use buffer functions
...instead of adhoc uint functions
2014-09-17 14:49:17 -07:00
Ryan X. Charles
5da964739d remove unused base58 dependency 2014-09-17 14:44:16 -07:00