Commit graph

411 commits

Author SHA1 Message Date
Daniel Cousens
bc37e65014 Enforces Array input for deterministicGenerateK 2014-04-23 06:28:00 +10:00
Kyle Drake
1b66976d92 Merge pull request #146 from dcousens/magictests
MagicHash Tests
2014-04-21 09:39:50 -07:00
Kyle Drake
21aa517cd2 Merge pull request #143 from dcousens/multisigfix
Multi-sig ScriptSig Support
2014-04-21 09:39:03 -07:00
Daniel Cousens
ae60e6eb95 Replacse JSBN with bigi 2014-04-22 02:19:30 +10:00
Daniel Cousens
96ebb65099 Removes ecdsa.getBigRandom 2014-04-22 02:04:56 +10:00
Daniel Cousens
f5ce83beca Adds working implementation of Script.createP2SHMultisigScriptSig 2014-04-22 00:28:13 +10:00
Daniel Cousens
fb6c76a976 Merges Buffer refactorings from base58-native by Stephen Pair 2014-04-22 00:24:20 +10:00
Daniel Cousens
1b46a10d2a magicHash now uses Buffers internally 2014-04-22 00:23:12 +10:00
Daniel Cousens
c44af2109e Uses typeof address === 'string' instead 2014-04-20 04:54:50 +10:00
Daniel Cousens
64dc11486c Removes resolved TODO 2014-04-20 04:49:04 +10:00
Daniel Cousens
92f1c3e319 Fixes Transaction.addOutput() param handling to match documentation
Now (horrendously) supports other networks
2014-04-20 04:47:56 +10:00
Daniel Cousens
f3a55f63dc Assert uses strictEqual instead of direct comparison 2014-04-20 04:39:29 +10:00
Daniel Cousens
1d1306b054 Removes Address.fromPubKey and improves test vectors 2014-04-20 04:38:33 +10:00
Daniel Cousens
eae613d244 Adds error messages and better version checking 2014-04-18 17:12:29 +10:00
Daniel Cousens
682ec133bb Migrates Address to stricter API subset 2014-04-18 17:12:29 +10:00
Wei Lu
701af74ade Merge pull request #142 from dcousens/asserts
Adds assertion error messages for HDWallet
2014-04-18 09:59:06 +08:00
Wei Lu
06cd6a698b Merge pull request #139 from dcousens/eckeystrict
Migrates ECKey to stricter API
2014-04-18 09:56:41 +08:00
Daniel Cousens
5adaa7dd54 Prefer Array.prototype.slice over map 2014-04-18 06:43:59 +10:00
Daniel Cousens
de59f6d3ac Adds assertion error messages for HDWallet 2014-04-18 06:43:14 +10:00
Daniel Cousens
ca4ba91d9c Cleans up ECKey error handling 2014-04-18 06:36:34 +10:00
Daniel Cousens
b4f70dcdde Migrates ECKey to stricter API 2014-04-18 06:36:27 +10:00
Kyle Drake
669444cb10 Merge pull request #135 from greenaddress/low-s-signatures
Uses low 's' values for signatures
2014-04-17 08:51:40 -07:00
Daniel Cousens
505e33c942 Changes netstr to networkString 2014-04-17 19:49:03 +10:00
GreenAddress.it
d7c2e4d5a5 Uses low 's' values for signatures 2014-04-17 06:05:41 +02:00
Kyle Drake
3219e5e727 Merge pull request #132 from dcousens/remmisc
Removes test/misc.js and moves tests to appropriate location
2014-04-16 14:25:35 -07:00
Daniel Cousens
ddea4b176b Moves derivation math out into the open 2014-04-17 06:45:57 +10:00
Daniel Cousens
bacf7e7ae2 Removes format dependency 2014-04-17 06:45:29 +10:00
Daniel Cousens
814aa9e552 HDWallet now uses Buffers internally 2014-04-17 06:45:24 +10:00
Daniel Cousens
a4ab75d560 Renames network parameter to netstr
This should make the intent clearer.
This commit also catches the `null` case for the seed parameter.
2014-04-17 06:09:45 +10:00
Daniel Cousens
bc05828fbc Adds Buffers as input parameters 2014-04-17 06:07:06 +10:00
Daniel Cousens
f047afef2d Updates network.js constant names 2014-04-17 05:50:59 +10:00
Daniel Cousens
56336b9c2b Removes use of convert module 2014-04-17 04:16:51 +10:00
Daniel Cousens
a689c6fc9a Renames ecparams to curve to avoid confusion 2014-04-16 21:13:54 +10:00
Daniel Cousens
8a9a377d70 Merge pull request #129 from dcousens/indexclean
Cleanup of Index.js
2014-04-14 16:21:54 +10:00
Daniel Cousens
db115e1b27 CryptoJS no longer exported by default 2014-04-14 16:19:17 +10:00
Daniel Cousens
addf4528d4 Removes Key module (use ECKey) 2014-04-14 15:45:31 +10:00
Wei Lu
4b86b1c7b8 clean up comments & extract methods
[follow-up #125]
2014-04-14 12:53:12 +08:00
Daniel Cousens
82a17de5c4 Orders modules by name 2014-04-14 13:15:43 +10:00
sidazhang
aa43e98ac0 Aligning type naming with bitcoind and fixed pubkeyhash bug 2014-04-11 15:20:42 -07:00
Daniel Cousens
1f0fb90213 Pads zeros in toBytes output, fixes #121 2014-04-09 18:06:50 +10:00
Daniel Cousens
6de94856e3 Makes ECDSA capitalization consistent 2014-04-09 04:11:13 +10:00
Wei Lu
dd509d05cf Merge pull request #114 from dcousens/secsimpl
Removal of curveFpDecodePointHex
2014-04-08 22:24:33 +08:00
Daniel Cousens
aa8d86e6a4 Hash160 now outputs a buffer 2014-04-08 23:44:55 +10:00
Daniel Cousens
c99a576fbd Migrates all usage of crypto-js/sha256 to ./crypto 2014-04-08 23:07:46 +10:00
Daniel Cousens
81d9c8e759 Renames util.js to crypto.js 2014-04-08 22:00:28 +10:00
Daniel Cousens
a4c2cc6dd4 Removes pointless error utility function 2014-04-08 21:53:47 +10:00
Daniel Cousens
7451c54cc6 Removes curveFpDecodePointHex 2014-04-07 13:51:12 +10:00
Daniel Cousens
39abb2b9f9 Stops using decodeFromHex 2014-04-07 13:49:53 +10:00
Wei Lu
703275f235 Merge pull request #112 from dcousens/b58
Base58 isolation and preparation for Buffers
2014-04-04 16:41:00 +08:00
Daniel Cousens
6fa0c07763 Changes existing code to use new base58 API 2014-04-04 05:10:12 +11:00
Daniel Cousens
f53b821cc9 Isolates Base58Check encoding from Base58 code/tests 2014-04-03 19:45:05 +11:00
lms
b79ccb2c0c 100% coverage of wallet.js 2014-04-01 21:05:46 +02:00
Daniel Cousens
04684b74f1 Some cosmetic fixes 2014-04-01 15:52:40 +11:00
Wei Lu
93fe1b4c78 cosmetic standardization
[closes #56]
2014-03-31 11:47:47 +08:00
Wei Lu
161127d65a Merge branch 'msgvers-patch2' of github.com:dcousens/bitcoinjs-lib into dcousens-msgvers-patch2
Conflicts:
	src/message.js
2014-03-31 10:08:25 +08:00
Wei Lu
06b6112d58 Merge branch 'dangerpriv' of github.com:dcousens/bitcoinjs-lib into dcousens-dangerpriv 2014-03-29 21:56:44 +08:00
Wei Lu
db35a84a80 Merge pull request #105 from dcousens/removeexport
Removes deprecated ECKey.export function
2014-03-29 19:24:54 +08:00
Daniel Cousens
8fd06681ef Adds fail fast assertions for invalid input 2014-03-29 19:41:05 +11:00
Daniel Cousens
3fa43b83b6 Comma consistency 2014-03-29 19:25:04 +11:00
Daniel Cousens
626c31911b Removes dangerous private key throwaway 2014-03-29 19:25:04 +11:00
Daniel Cousens
8f7f50d555 Removes deprecated ECKey.export function 2014-03-29 18:12:02 +11:00
Daniel Cousens
10dea421d5 Removes circular dependancy of ECKey 2014-03-29 17:50:50 +11:00
Daniel Cousens
bfc5924522 Compression is irrelevant in comparison 2014-03-29 17:31:27 +11:00
Daniel Cousens
669a58bbf8 Removes unnecessary SHA256 calculations 2014-03-29 17:27:10 +11:00
Daniel Cousens
78e91e8648 Further isolates failure tests and joins [un]/compressed key tests 2014-03-29 17:06:33 +11:00
Daniel Cousens
38f09b49e9 Now using Bytes consistently for signatures 2014-03-29 06:05:07 +11:00
Daniel Cousens
7ec046f797 Changes Message.*Message function names to Message.* 2014-03-29 06:03:43 +11:00
Daniel Cousens
373f668562 Adds version support to Message.verifyMessage 2014-03-28 16:44:00 +11:00
Wei Lu
a1c80b8f51 minor cleanup of wallet.sign 2014-03-28 11:32:15 +08:00
Wei Lu
0ce14a7c84 Merge pull request #96 from ralphtheninja/master
cleaned up address.js and util.js
2014-03-28 10:01:26 +08:00
lms
98aeb47c6f cleaned up address.js 2014-03-27 23:11:04 +01:00
Kyle Drake
275d5509dc Merge pull request #98 from symaxian/master
Cleaning up message.js
2014-03-27 13:59:29 -07:00
Jonathon Reesor
096f8c982e Cleaning up message.js 2014-03-26 21:00:08 -04:00
Kyle Drake
2f5b302288 Merge pull request #97 from dcousens/reverseVarInt
Adds varIntToNum conversion function
2014-03-26 16:20:58 -07:00
Wei Lu
39c181dce6 allow fee to be set to zero 2014-03-26 20:20:58 +08:00
Wei Lu
4d4388f6bf make wallet async functions truly async 2014-03-26 20:05:13 +08:00
Daniel Cousens
63dd7c7dec Now uses varIntToNum 2014-03-26 19:11:37 +11:00
Daniel Cousens
20599f66c9 Adds varIntToNum conversion function 2014-03-26 18:30:17 +11:00
Wei Lu
8d2525dba1 allow feePerKb to be set to zero 2014-03-26 08:43:34 +08:00
Wei Lu
68b08b638a add async version of createTx 2014-03-26 08:43:33 +08:00
Wei Lu
f7d4895b74 add async version of setUnspentOutputs 2014-03-26 08:43:33 +08:00
Wei Lu
83db6483fa remove unnecessary imports from wallet 2014-03-26 08:43:33 +08:00
Wei Lu
75218e784f Transaction fee calculation does not need BigInteger 2014-03-26 08:43:33 +08:00
Wei Lu
7bfa6ab9d2 remove scriptPubKey from wallet.outputs, set/get unspent outputs as it is unused 2014-03-26 08:43:33 +08:00
Wei Lu
7bd312de71 get rid of magic numbers in fee estimation 2014-03-26 08:43:33 +08:00
Wei Lu
58ab0b631e getBalance returns total unspent 2014-03-26 08:43:33 +08:00
Wei Lu
9fc5505730 getUnspentOutputs excludes spent outputs 2014-03-26 08:43:33 +08:00
Wei Lu
77b5d1ee21 getCandidateOuputs ignores spent outputs 2014-03-26 08:43:33 +08:00
Wei Lu
2501868f52 remove old methods 2014-03-26 08:43:32 +08:00
Wei Lu
471bc7ed97 skip change if it is not above dust threshold 2014-03-26 08:43:32 +08:00
Wei Lu
90921798cf throws error on insufficient fund 2014-03-26 08:43:32 +08:00
Wei Lu
7c81bfef72 check for dust before creating transaction 2014-03-26 08:43:32 +08:00
Wei Lu
913b48e87f sign tx 2014-03-26 08:43:32 +08:00
Wei Lu
8f0413da98 always assume change output exists when estimating fee 2014-03-26 08:43:32 +08:00
Wei Lu
2dc0f69d00 createTX returns tx with expected inputs and outputs 2014-03-26 08:43:32 +08:00
Wei Lu
3d12d3b038 implement and use txOut.scriptPubKey 2014-03-26 08:43:32 +08:00
Wei Lu
5d79b094d4 remove processOutput and processExistingOutput
instead of processOutput, use processTx instead
processExistingOutput is time based which is not reliable
2014-03-26 08:43:32 +08:00
Wei Lu
b7d65fb757 Transaction is able to estimate fees 2014-03-26 08:43:31 +08:00
Wei Lu
e574693594 wallet.outputs[0].output -> wallet.outputs[0].receive
output is overloaded. Considering we have output.spend, output.receive makes sense to me
2014-03-26 08:43:31 +08:00
Wei Lu
dbb5681366 add tests and refactor wallet.processTx 2014-03-26 08:43:31 +08:00
Wei Lu
83381186d1 add (some) fromAddress and getInType tests to script 2014-03-26 08:43:31 +08:00
Wei Lu
c3880c0cdf script.toAddress -> script.getToAddress 2014-03-26 08:43:31 +08:00
Wei Lu
c39aa6cb07 minor refactoring 2014-03-26 08:42:35 +08:00
Wei Lu
01dc34d720 throw error when unspent output does not have required keys 2014-03-26 08:42:35 +08:00
Wei Lu
26afbccc98 wallet allows setting unspent outputs 2014-03-26 08:42:35 +08:00
Wei Lu
16dc68cbaa wallet exposes unspent outputs via a getter
also add reverseEndian method to convert
2014-03-26 08:42:35 +08:00
Daniel Cousens
164d31ee3d VarInt now uses correct prefix for 64-bit 2014-03-25 17:23:01 +11:00
Kyle Drake
a74c878b59
merge eckeyoutput 2014-03-24 15:11:34 -07:00
Kyle Drake
d16ea7f2a6 Merge pull request #89 from Dcousens/eckeyfnc
Adds ECPubKey.verify and tests for ECKey signing
2014-03-24 15:03:51 -07:00
Daniel Cousens
f1414b0d2f Adds verify to ECPubKey 2014-03-25 03:42:10 +11:00
Daniel Cousens
a96dfea1f4 Adds compression flag to toHex/toBin and tests 2014-03-25 03:41:44 +11:00
Daniel Cousens
f8de9a66da Changes indentation to 2 spaces 2014-03-24 16:18:02 +11:00
Daniel Cousens
fc2c495337 Standardizes function signatures 2014-03-24 16:18:00 +11:00
Daniel Cousens
36af0223de Strict comparison operators with 0 2014-03-24 06:22:26 +11:00
Daniel Cousens
a062297be2 Uses Array.prototype.foreach for stricter scoping 2014-03-24 06:22:26 +11:00
Daniel Cousens
87453f1828 Fixes variable redeclarations 2014-03-24 06:22:26 +11:00
Daniel Cousens
ed137a3b9d Various stylistic changes 2014-03-24 06:22:26 +11:00
Daniel Cousens
f580516c06 Removes unused variables 2014-03-24 06:22:26 +11:00
Wei Lu
9358a40500 tabs -> spaces 2014-03-24 03:19:39 +08:00
Daniel Cousens
e9fdfecfea Changes default EC*Key.toString behaviour to Hex 2014-03-23 18:42:52 +11:00
Daniel Cousens
b40374e332 Changes to new version-less ECKey API 2014-03-22 19:12:26 +11:00
Daniel Cousens
a1be488d1b Fixes #78 2014-03-22 16:27:10 +11:00
Wei Lu
35747fb1fb Merge pull request #76 from coinpunk/transactioncleanups
Many cleanups to Transaction, see detailed.
2014-03-21 15:54:59 +08:00
Kyle Drake
40881a7dd8
add back SIGHASH code to transaction 2014-03-20 19:15:15 -07:00
Kyle Drake
28e146431c
Many cleanups to Transaction, see detailed.
Default-ize the sequence rather than use a number, and default to bytes
for input. I doubt anybody ever uses this anyways.

Remove weird convenience code, and remove wallet logic. Checking a TX's
affects on a wallet should be managed by the wallet object.

Remove parsing for the weirder SIGHASH types. People use this library
for creating SIGHASH_ALL transactions, and I don't see the need to
support these other types at the moment since this library's more used
for wallets than for hardcore bitcoin tx analysis/creation. They weren't
tested anyways.

Add note about potentially improving performance by providing
pubkey/address. Deriving from the private key is slower, that
information should probably be cached by the end user.
2014-03-20 15:40:07 -07:00
Wei Lu
b7861e4336 replace jsbn's rng with module secure-random
This uses window.crypto.getRandomValues on browser
and crypto.randomBytes on node
2014-03-20 17:19:06 +08:00
Kyle Drake
28517bed13 Merge pull request #71 from bitcoinjs/transaction-tests
Transaction tests & fix addInput hash allowed formats
2014-03-17 18:40:49 -07:00
Kyle Drake
ace3fd122c Merge pull request #60 from bitcoinjs/hd-keychain-structure
HD wallet keychain structure
2014-03-17 17:00:18 -07:00
Wei Lu
2e6ef6cb85 fix and add tests for addInput 2014-03-17 18:01:09 +08:00
Wei Lu
a5ee07f7f6 Add tests to transaction deserialization
lock_time -> locktime
2014-03-17 16:31:35 +08:00
Wei Lu
9f2da415ea fix script constructor array check 2014-03-17 16:13:49 +08:00
Wei Lu
31cfb11178 new master key resets accounts and addresses 2014-03-16 13:36:57 +08:00
Pablo Martin
2e26a137d5 require crypto-js/sha256 instead of ./crypto-js/sha256. 2014-03-16 03:02:04 +01:00
Pablo Martin
8f383be325 fix transaction hashing (was using Message.getHash incorrectly). 2014-03-16 02:42:49 +01:00
Wei Lu
a7a7999e3f fix Wallet default constructor 2014-03-15 10:18:59 +08:00
Wei Lu
b2f010428f store accounts in closure instead of on object 2014-03-14 10:35:01 +08:00
Wei Lu
d4f3398d91 remove keys array and usage 2014-03-14 10:35:01 +08:00
Wei Lu
207163704b return private key rather than HD wallet node 2014-03-14 10:35:01 +08:00
Wei Lu
9200479159 getPrivateKey derives key on the fly
also added getPrivateKeyFromAddress
2014-03-14 10:35:01 +08:00
Wei Lu
ab9e782d14 private a method to generate change addresses 2014-03-14 10:35:00 +08:00
Wei Lu
1212099bfc Wallet address derivation follows bip32/bitcoinj keychain structure
Also wallet accepts bytes in constructor

[#60]
2014-03-14 10:34:37 +08:00
Wei Lu
44012b47b5 change hd wallet constructor to take bytes
original constructor -> fromSeedString, fromMasterHex -> fromSeedHex

[#60]
2014-03-14 10:03:56 +08:00
Wei Lu
142b847968 HD wallet fromMaterHex allows specifying network
[#60]
2014-03-14 10:03:56 +08:00
Kyle Drake
eb4da5f5c5
remove endian code in index.js nothing is using 2014-03-11 12:26:59 -07:00
Kyle Drake
7219c27413 Merge pull request #62 from bitcoinjs/compressed-sign
Fix sign/verify for with compressed keys
2014-03-11 12:12:52 -07:00
Andreas Brekken
08e75a82c9 Add whether pubkey recovered from sig is compressed. close #61 2014-03-11 18:28:04 +01:00
Andreas Brekken
f09890fed1 Determine whether key is compressed from the key itself. ref #61 2014-03-11 18:26:40 +01:00
Wei Lu
3d6b66e811 move convert methods from util to convert 2014-03-11 09:52:48 +08:00
Wei Lu
227fa97500 remove old crypto-js 2014-03-11 09:32:06 +08:00
Wei Lu
9c15fa0cbf Merge pull request #57 from bitcoinjs/upgrade-crypto-js
Use crypto-js as a module from npm
2014-03-11 09:14:49 +08:00