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
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
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
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
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
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
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
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
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
bb8373ead7
remove script_interpreter for partial commit
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
3775d3c08a
fix tests for preconditions
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
005cf074fd
Merge pull request #696 from yemel/feature/transport
...
P2P Peer Connections
2014-12-11 16:10:18 -03:00
Braydon Fuller
d4d3d4ab4a
PrivateKey: Add documentation and refactor to use network object as a parameter.
2014-12-11 13:21:09 -05:00
Yemel Jardi
3190991941
add dependencies and update tests
2014-12-11 14:01:06 -03:00
Yemel Jardi
9b6183b083
Improving code thanks to jshint
2014-12-11 13:11:55 -03:00
Yemel Jardi
3e775bd0f9
Move messages data to a separate file
2014-12-11 11:42:56 -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
228e7e214a
Add tests
2014-12-10 18:09:27 -03:00
Yemel Jardi
56907c1a3b
Add missing argument
2014-12-10 18:09:27 -03:00
Yemel Jardi
44eca35af9
rename peer tests
2014-12-10 18:09:27 -03:00
Yemel Jardi
9ce450c142
Remove old tests
2014-12-10 18:09:27 -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
Yemel Jardi
d584febea0
Fix tests
2014-12-10 17:50:46 -03:00
Manuel Araoz
c085f166b4
add sorting to Script#buildMutlisigOut()
2014-12-10 16:54:30 -03:00
Manuel Araoz
ec464681fe
add sorting to Script#buildMutlisigOut()
2014-12-10 16:46:20 -03:00
Manuel Araoz
63bc625c33
add Script#removeCodeSeparators tests
2014-12-10 16:09:08 -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
22b1193e32
Merge pull request #688 from eordano/feature/addressMethods
...
Add check functions to Address
2014-12-09 17:51:25 -03:00
Esteban Ordano
1816ba197f
Add check functions to Address
2014-12-09 17:25:36 -03:00
Manuel Araoz
ec00ccba4c
add script public key hash in tests
2014-12-09 16:11:57 -03: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
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
f231f8a054
fix a browser test 2
2014-12-04 15:40:27 -03:00
Manuel Araoz
6c5198b743
fix a browser test
2014-12-04 15:38:46 -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
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
ae80ca8678
PublicKey: Add test to verify that both uncompressed an compressed keys validatate. Fixes #665
2014-12-04 12:47:59 -05:00
Braydon Fuller
64c0d5f942
Payment Protocol: Restore and reorganize files for payment protocol.
2014-12-04 10:43:40 -05:00
Manuel Araoz
ef8f1eabd2
add script.isStandard()
2014-12-02 14:20:58 -03:00
Manuel Araoz
883a7cae54
add unkown script test
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
901d55d129
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
9d6ff4dc44
add 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
66e96e5fa4
make tests pass with Script refactor
2014-12-02 14:20:02 -03: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
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
4ba53fcb92
Tests: Check that PrivateKey is using the defaultNetwork
2014-12-01 18:22:51 -05:00
Braydon Fuller
2cbcf7da1c
Tests: Check that an Address is using the defaultNetwork
2014-12-01 18:19:17 -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
c9951be2dc
Base URI class and tests
2014-12-01 17:18: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
1ae88eed7a
Add new test for string values
2014-12-01 16:05:01 -03:00
Yemel Jardi
ab517cae9c
refactor double quote
2014-12-01 16:02:28 -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
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
Manuel Araoz
1f3d7d9872
move Signature to crypto/
2014-11-27 16:42:44 -03:00
Esteban Ordano
4b201a8db1
Replace grunt with gulp
2014-11-25 21:26:52 -03: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
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
Braydon Fuller
deb54c5a20
Address: Return new instance if `this` isn't already instantiated.
2014-11-24 15:47:30 -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
0df97a42fe
Address: Fix indentation, typos and simplify isValid
2014-11-21 19:02:58 -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
a45dee3a4b
'hide' encoding and crypto
2014-11-21 13:26:30 -03:00
Manuel Araoz
c8239c8655
remove unused dep
2014-11-21 12:59:06 -03: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
1477572a04
fix bitcore reference
2014-11-21 10:29:41 -03:00
Manuel Araoz
eb7be6ac44
fix tests for varint
2014-11-20 18:55:23 -03:00
Manuel Araoz
d2fe2909db
fix tests for bufferwriter
2014-11-20 18:53:01 -03:00
Manuel Araoz
ea05ec625e
fix tests for bufferreader
2014-11-20 18:49:55 -03:00
Manuel Araoz
3bd2654eb4
fix tests for base58check
2014-11-20 18:48:44 -03:00
Manuel Araoz
890bed0af6
fix tests for base58
2014-11-20 18:47:47 -03:00
Manuel Araoz
5440baad83
fix tests for random
2014-11-20 18:46:43 -03:00
Manuel Araoz
4c925dc249
fix tests for point
2014-11-20 18:44:19 -03:00
Manuel Araoz
fa2b54332c
fix tests for kdf
2014-11-20 18:43:32 -03:00
Manuel Araoz
e71e41542c
fix tests for hash
2014-11-20 18:42:54 -03:00
Manuel Araoz
f0740e0589
fix tests for ecdsa
2014-11-20 18:42:03 -03:00
Manuel Araoz
f178445b07
fix tests for bn
2014-11-20 18:40:23 -03:00
Manuel Araoz
9e30a0236c
fix tests for txout
2014-11-20 18:39:02 -03:00
Manuel Araoz
4dd9f60f8c
fix tests for txin
2014-11-20 18:37:33 -03:00
Manuel Araoz
a18d703b86
fix tests for tx
2014-11-20 18:35:23 -03:00
Manuel Araoz
1df88d0694
fix tests for signature
2014-11-20 18:34:15 -03:00
Manuel Araoz
778977449a
fix tests for script
2014-11-20 18:33:26 -03:00
Manuel Araoz
b2ef61328f
fix tests for pubkey
2014-11-20 18:31:08 -03:00
Manuel Araoz
3ac26759e4
fix tests for privkey
2014-11-20 18:29:56 -03:00
Manuel Araoz
685e0c5a95
fix tests for opcode
2014-11-20 18:29:02 -03:00
Manuel Araoz
40d308748f
fix tests for keypair
2014-11-20 18:28:00 -03:00
Manuel Araoz
24b16fc126
fixing tests for examples
2014-11-20 18:26:24 -03:00
Manuel Araoz
7d09addcaa
fixing tests for blockheader
2014-11-20 18:21:13 -03:00
Manuel Araoz
c06c81e27b
fixing tests
2014-11-20 18:19:48 -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
6f2913eed4
fix references
2014-11-20 11:50:23 -03:00
Manuel Araoz
54fa31c85d
remove crypto
2014-11-18 18:59:31 -03:00
Eric Martindale
6102374875
Full suite of working tests for Identities.
2014-10-06 18:03:20 -04: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
75cf4c4f9a
tidy up identity class, add tests.
2014-10-02 22:27:18 -04:00
Eric Martindale
f01ebd97d2
Buffers, identities, and randomNumbers.
2014-10-01 21:08:06 -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
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
d689dbb77e
speed up random test slightly
...
...by caching hexes. Also, correct the "1000" typo - it's actually 100.
2014-09-23 20:28:16 -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
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
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
1516ad3012
remove unused addressString variable
2014-09-22 12:52:09 -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
ffdfe0ce83
add fromString test for bip32
...
...since it was lacking any tests
2014-09-19 21:02:57 -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
d2bc960744
fix capitalization error on case-sensitive filesystems
2014-09-17 17:02:40 -07:00
Ryan X. Charles
6fe5d416a0
fix capitalization error on case-sensitive filesystems
2014-09-17 17:00:32 -07:00
Ryan X. Charles
cf5b2f1250
varint -> vi canonical spelling
2014-09-17 16:48:23 -07:00
Ryan X. Charles
4a21a9551c
fromX is actually static
...
...should add an instance method in the future
2014-09-17 16:32:38 -07:00
Ryan X. Charles
f727c5ad25
fix varint test broken in browser
2014-09-17 16:03:57 -07:00
Ryan X. Charles
0212e4bd4c
replace .buffer with .read
2014-09-17 15:49:45 -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
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
5f21059bf8
more convenient names
2014-09-17 15:20:01 -07:00
Ryan X. Charles
9473bdf9b0
more convenient name
2014-09-17 15:15:56 -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
78ef76eb2f
more convenient constructor
...
...allow inputing strings or buffers in the constructor.
2014-09-17 14:29:53 -07:00
Ryan X. Charles
40ea68a3ff
more convenient Base58 constructor
2014-09-17 14:26:19 -07:00
Ryan X. Charles
ac85264a28
Address().fromBuffer(buf);
2014-09-17 14:22:18 -07:00
Ryan X. Charles
8a52e6c316
Block
2014-09-16 18:42:11 -07:00
Ryan X. Charles
0d180810de
Blockheader
2014-09-16 17:28:00 -07:00
Ryan X. Charles
7ea66e032f
add real-world tx to transaction test
2014-09-16 14:39:51 -07:00
Ryan X. Charles
5b25679e15
Transaction
2014-09-16 14:35:26 -07:00
Ryan X. Charles
6c42969d01
improve error message
2014-09-16 11:44:51 -07:00
Ryan X. Charles
6e9755b009
sign, verify convenience functions
2014-09-16 11:34:28 -07:00
Ryan X. Charles
ed335f35f7
throw error if hashbuf is not 32 bytes
2014-09-16 11:33:49 -07:00
Ryan X. Charles
ced35a07eb
Txout
2014-09-15 18:38:21 -07:00
Ryan X. Charles
42130c78a0
Txin
2014-09-15 17:08:09 -07:00
Ryan X. Charles
4594cbb9e7
add bn support to varint class
2014-09-15 15:29:39 -07:00
Ryan X. Charles
3fa651e553
disable examples in browser
2014-09-15 15:09:50 -07:00
Ryan X. Charles
f6a8878aa2
Varint class
...
...will be useful in transactions. Note that we already have a primitive
understanding of Varints in the BufferReader and BufferWriter classes. However,
the new Varint class is a varint object which actually depends on BufferReader
and BufferWriter for reading and writing varints. This class is for keeping
track of the raw buffer that is read in from a buffer.
2014-09-15 15:05:54 -07:00
Ryan X. Charles
4bb9105b2d
varInt -> varint
...
I don't like having to capitalize things unnecessarily
2014-09-15 14:41:46 -07:00
Ryan X. Charles
30c96721a0
varIntNum
2014-09-15 14:36:31 -07:00
Ryan X. Charles
d363956ba1
add readVarIntBuf function
...
...will be useful for new Varint class
2014-09-15 14:27:42 -07:00
Ryan X. Charles
3c668c9cf0
readVarInt -> readVarIntNum
...
"varInt" refers to the varInt object, which is not actually implemented yet.
This function should therefore really be called readVarIntNum.
2014-09-15 14:19:08 -07:00
Ryan X. Charles
8e959426e2
support reading varInt nums up to js precision
...
Javascript only supports 64 bit floating points, which have uint precision up
to Math.pow(2, 53). We now support reading variable sized numbers up to that
size. If the number is bigger than that, then we need to use BN.
2014-09-15 13:58:24 -07:00
Ryan X. Charles
543762bc67
fromBuffer convenience function for pubkey
2014-09-15 11:32:39 -07:00
Ryan X. Charles
385edbcc92
simplify ECIES interface
...
the toKeypair doesn't really need to be a keypair. upon encrypting, it merely
needs to be a pubkey. and upon decrypting, it needs to be a privkey.
2014-09-15 11:19:18 -07:00
Ryan X. Charles
8dc6a5023a
test the case when no fromkeypair is used
...
...during encryption, and make sure you can still decrypt the message.
2014-09-15 10:52:32 -07:00
Ryan X. Charles
fbfa64582c
autogenerated fromkeypair if not present
2014-09-15 10:43:14 -07:00
Ryan X. Charles
4a027e260a
Address().fromScript(script)
...
It is convenient to be able to derive an address directly from a script for
p2sh transactions.
2014-09-12 17:49:01 -07:00
Ryan X. Charles
79d79012d4
fix bug where you can't use isForMe without payloadKeypair
...
It should be possible to check to see if a message isForMe with only the
scanKeypair, and not the payloadKeypair. There was a bug where only the
scanKeypair was being used to produce the receiveKeypair, but this was a
mistake. Both the scanPubkey and payloadPubkey should be necessary to produce
the receivePubkey, and both the scanPrivkey and payloadPrivkey should be
necessary to produce the receivePrivkey. If an online computer has only the
public keys of both (and the scanPrivkey), then that is good enough to check
for isForMe.
2014-09-12 17:24:00 -07:00
Ryan X. Charles
88f3690ef6
StealthMessage example
2014-09-12 12:55:11 -07:00
Ryan X. Charles
5a86a1a5c6
StealthMessage
...
This code should be regarded as being a proof-of-concept, and needs more review
before being used in production code. At least one thing is guaranteed to
change, and that is the format of a stealth address.
2014-09-10 14:00:53 -07:00
Ryan X. Charles
74549a53ec
key -> keypair
...
Since the class has been renamed Key -> Keypair, instances should be renamed
key -> keypair.
2014-09-02 16:36:21 -07:00
Ryan X. Charles
219aa528c8
AsReceiver implied
2014-09-02 15:54:24 -07:00
Ryan X. Charles
558a7672ef
Stealthkey AsSender functions obsolete
...
use StealthAddress instead
2014-09-02 15:28:32 -07:00
Ryan X. Charles
d1a570135d
getSharedKeypair & getReceivePubkey
2014-09-02 15:25:16 -07:00
Ryan X. Charles
48ae69cab0
convenience: StealthAddress(str) or StealthAddress(buf)
2014-09-02 14:23:11 -07:00
Ryan X. Charles
36fd6b2d9c
take address stuff out of stealthkey
...
...that is what StealthAddress is now for
2014-09-02 12:53:41 -07:00
Ryan X. Charles
139fe02355
StealthAddress
2014-09-02 12:48:36 -07:00
Ryan X. Charles
258dab9d6d
convenience: Stealth(payloadKeypair, scanKeypair)
2014-09-02 12:08:33 -07:00
Ryan X. Charles
a768755764
convenience: new Pubkey(point)
2014-09-01 21:16:10 -07:00
Ryan X. Charles
6f56c8d1fc
convenience: new Privkey(bn)
2014-09-01 21:13:44 -07:00
Ryan X. Charles
ef3a89f254
add Signature(r, s) convenience
2014-09-01 21:08:16 -07:00
Ryan X. Charles
3b2b725070
Script().fromString(str)
...
...the format of fromString and toString are deliberately not compatible with
bitcoind. The format here is supposed to be both human-readable, and
byte-for-byte isomorphic to the binary representation. In the future we will
need to add support for bitcoind-like strings, both for the test data (e.g.,
script_invalid.json) or for the bitcoind console style.
2014-09-01 19:42:20 -07:00
Ryan X. Charles
6375941ef8
script.toString()
2014-09-01 18:31:02 -07:00
Ryan X. Charles
e6af57f4fa
script.toBuffer();
2014-09-01 18:01:17 -07:00
Ryan X. Charles
378dc923ef
preserve claimed length and op code
...
When parsing OP_PUSHDATAX commands, the the length of data might not require
the size integer of OP_PUSHDATAX. For instance, you might write 1 byte, and yet
use OP_PUSHDATA4. We need to record which OP_PUSHDATAX was used so that when we
write the buffer back out, we can write the same one. Also, the claimed length
may be different. For instance, we may OP_PUSHDATA of length 100 to the stack,
but there may only be 50 bytes left in the script. In that case, buf.length and
chunk.len will be different. I'm not sure if that would be considered a valid
script, but in any case, for script analysis, we need both values.
2014-09-01 17:27:39 -07:00
Ryan X. Charles
e3aa93614e
one more test to make sure things are working
2014-09-01 16:44:27 -07:00
Ryan X. Charles
697b3e5009
Script().fromBuffer(buf)
...
...code heavily inspired/copied from bitcore
2014-09-01 16:41:07 -07:00
Ryan X. Charles
8b3ad7ac85
read a buffer, like slicing while iterating pos
2014-09-01 16:40:31 -07:00
Ryan X. Charles
572582938f
more convenient bufferreader
2014-09-01 15:53:26 -07:00
Ryan X. Charles
15801773e3
the beginnings of script
2014-09-01 15:45:03 -07:00
Ryan X. Charles
6a26813955
p2sh -> scripthash
...
more appealing and memorable name
2014-09-01 12:06:18 -07:00
Ryan X. Charles
a0150f82ef
fromNumber, toNumber, fromString, toString
...
...like the rest of the library.
2014-08-31 20:38:39 -07:00
Ryan X. Charles
03578e2ba5
Opcode
...
...code from bitcore
2014-08-29 19:24:51 -07:00
Ryan X. Charles
c59013eb46
remove useless Address dependency from Keypair
...
to get an address from a key, just do Address().fromPubkey(key.pubkey)
2014-08-29 15:42:30 -07:00
Ryan X. Charles
f028b6b913
Stealth -> Stealthkey
...
More explanatory. Will break up into separate Stealthkey, StealthAddress, and
StealthMessage classes.
2014-08-29 14:34:01 -07:00
Ryan X. Charles
32fabd0c0f
Key -> Keypair
...
"Keypair" is a more explanatory name, and also should be less confused with
other kinds of keys (particularly "cipher keys", which are the keys used in
symmetric block ciphers, especially AES).
2014-08-29 14:18:56 -07:00
Ryan X. Charles
40a2007e18
confusingly named SymEnc -> accurately named AESCBC
...
This will also further discourage use amongst anyone who doesn't understand
what this is.
2014-08-29 13:07:49 -07:00
Ryan X. Charles
bdb8daaf07
remove redundant "test." from test names
2014-08-29 13:01:05 -07:00
Ryan X. Charles
faa7a81cac
Key().fromPrivkey()
2014-08-29 12:43:55 -07:00
Ryan X. Charles
40e8dfec06
compressed by default with fromRandom
2014-08-29 12:38:43 -07:00
Ryan X. Charles
5313085773
Pubkey().fromPrivkey()
2014-08-28 20:19:30 -07:00
Ryan X. Charles
c39acbcca3
Privkey().fromRandom()
2014-08-28 19:27:22 -07:00
Ryan X. Charles
280578d641
network -> networkstr
...
...for compatibility with address, and to make the types obvious
2014-08-28 17:53:11 -07:00
Ryan X. Charles
e2824035bb
Pubkey.prototype.set
2014-08-28 17:41:38 -07:00
Ryan X. Charles
356ddcfa4e
test invalid address
2014-08-28 17:32:08 -07:00
Ryan X. Charles
ac47796acd
.isValid() is more convenient than .validate()
2014-08-28 17:30:32 -07:00
Ryan X. Charles
109f31cfdb
Privkey.prototype.set
2014-08-28 17:26:56 -07:00
Ryan X. Charles
6b4bc4c49c
Stealth.prototype.set
2014-08-28 17:00:34 -07:00
Ryan X. Charles
0ca390d45b
Message.prototype.set
2014-08-28 16:42:47 -07:00
Ryan X. Charles
a5f79c7651
Signature.prototype.set
2014-08-28 16:38:21 -07:00
Ryan X. Charles
28d3a40704
Key.prototype.set
2014-08-28 16:18:36 -07:00
Ryan X. Charles
75c1503a92
ECDSA.prototype.set
2014-08-28 16:07:28 -07:00
Ryan X. Charles
0d9b54711e
BufferWriter.prototype.set
2014-08-28 16:02:24 -07:00
Ryan X. Charles
3475ee973c
BufferReader.prototype.set
2014-08-28 15:52:32 -07:00
Ryan X. Charles
3919b24685
make bip32 mostly compatible with the rest of the lib
...
the constructor shouldn't do much. just set some varibles. in this case, i have
yet to write the code that sets the varibles. but better this than
autogenerating a new random BIP32. for that, call fromRandom()
2014-08-28 15:38:29 -07:00
Ryan X. Charles
d50d766352
Base58Check.prototype.set
2014-08-28 15:31:06 -07:00
Ryan X. Charles
da8989b649
add set function to Base58
2014-08-28 15:27:58 -07:00
Ryan X. Charles
6b7592d67b
add address validation convenience function
2014-08-28 15:22:03 -07:00
Ryan X. Charles
f52e679f93
refactor address - use "set" function
...
...intend for this to become standard throughout the lib
2014-08-28 15:18:48 -07:00
Ryan X. Charles
cc316e9455
ECIES
2014-08-28 14:43:21 -07:00
Ryan X. Charles
6f54d4cde6
Encryption -> SymEnc
...
This is more explanatory ("symmetric encryption") and also does not encourage
its use for people who don't know what they're doing. (It should only be used
in combination with some type of message authentication.)
2014-08-28 11:10:40 -07:00
Ryan X. Charles
1cb2f900af
symmetric encryption convenience class
2014-08-27 17:15:10 -07:00
Ryan X. Charles
ae02a878dd
woops ... actually check that output is correct
2014-08-27 15:57:46 -07:00
Ryan X. Charles
ed826bf95c
add test to make sure AES works with CBC
2014-08-27 15:37:54 -07:00
Ryan X. Charles
a8e3e0b993
static methods start with @ in tests
2014-08-27 14:37:28 -07:00
Ryan X. Charles
ce98b87d90
add it description
2014-08-27 14:37:01 -07:00
Ryan X. Charles
429a2d099f
test decrypt
2014-08-27 14:36:23 -07:00
Ryan X. Charles
73b904ce21
CBC decrypt
2014-08-25 21:16:33 -07:00
Ryan X. Charles
dfa190b5a5
blockbufs2buf
2014-08-25 21:02:00 -07:00
Ryan X. Charles
ae319ffcbc
unpad
2014-08-25 20:53:29 -07:00
Ryan X. Charles
a6e74666c8
decrypt blocks
2014-08-25 20:38:39 -07:00
Ryan X. Charles
eddeb60d7d
decrypt block
2014-08-25 20:25:18 -07:00
Ryan X. Charles
97e40f9ac6
rename keybuf -> cipherkeybuf
...
...since this use of "key" is very different than the public/private key pair
that is key.js
2014-08-25 16:38:53 -07:00
Ryan X. Charles
a09cac4ba6
block cipher should support "encrypt" and "decrypt"
2014-08-25 16:30:04 -07:00
Ryan X. Charles
12f29a9b52
CBC encryption
2014-08-25 16:25:01 -07:00
Ryan X. Charles
38d9ab65af
xor buffers ... will be useful for CBC
2014-08-24 20:51:56 -07:00
Ryan X. Charles
db7ae4c6d1
static tests start with @
2014-08-24 20:37:16 -07:00