Commit Graph

170 Commits

Author SHA1 Message Date
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