add fromhex methods.
This commit is contained in:
parent
0b56a4378a
commit
1eafe41bab
|
@ -18,6 +18,8 @@ var bitcoind = require('../')();
|
|||
var genesisBlock = '0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f';
|
||||
var genesisTx = '0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b';
|
||||
|
||||
var testTx = "01000000010b26e9b7735eb6aabdf358bab62f9816a21ba9ebdb719d5299e88607d722c190000000008b4830450220070aca44506c5cef3a16ed519d7c3c39f8aab192c4e1c90d065f37b8a4af6141022100a8e160b856c2d43d27d8fba71e5aef6405b8643ac4cb7cb3c462aced7f14711a0141046d11fee51b0e60666d5049a9101a72741df480b96ee26488a4d3466b95c9a40ac5eeef87e10a5cd336c19a84565f80fa6c547957b7700ff4dfbdefe76036c339ffffffff021bff3d11000000001976a91404943fdd508053c75000106d3bc6e2754dbcff1988ac2f15de00000000001976a914a266436d2965547608b9e15d9032a7b9d64fa43188ac00000000";
|
||||
|
||||
bitcoind.on('error', function(err) {
|
||||
print('error="%s"', err.message);
|
||||
});
|
||||
|
@ -33,6 +35,10 @@ bitcoind.on('open', function(status) {
|
|||
getBlocks(bitcoind);
|
||||
}
|
||||
|
||||
// var tx = bitcoind.tx.fromHex(testTx);
|
||||
// console.log(tx);
|
||||
// console.log(tx.txid === tx.getHash('hex'));
|
||||
|
||||
function compareObj(obj) {
|
||||
// Hash
|
||||
if (obj.txid) {
|
||||
|
|
|
@ -33,6 +33,10 @@ function Bitcoin(options) {
|
|||
|
||||
Bitcoin.global = this;
|
||||
|
||||
Object.keys(exports).forEach(function(key) {
|
||||
self[key] = exports[key];
|
||||
});
|
||||
|
||||
this.on('newListener', function(name) {
|
||||
if (name === 'open') {
|
||||
self.start();
|
||||
|
@ -380,6 +384,10 @@ Block.isBlock = function(block) {
|
|||
return block._blockFlag === _blockFlag;
|
||||
};
|
||||
|
||||
Block.fromHex = function(hex) {
|
||||
return bitcoin.block(bitcoindjs.blockFromHex(hex));
|
||||
};
|
||||
|
||||
Block.prototype.getHash = function(enc) {
|
||||
var data = bitcoindjs.getBlockHex(this);
|
||||
if (!this.hash || this.hash !== data.hash) {
|
||||
|
@ -458,6 +466,10 @@ Transaction.isTx = function(tx) {
|
|||
return tx._txFlag === _txFlag;
|
||||
};
|
||||
|
||||
Transaction.fromHex = function(hex) {
|
||||
return bitcoin.tx(bitcoindjs.txFromHex(hex));
|
||||
};
|
||||
|
||||
Transaction.prototype.verify = function() {
|
||||
return this.verified = this.verified || bitcoindjs.verifyTransaction(this);
|
||||
};
|
||||
|
@ -707,11 +719,6 @@ exports.bitcoind = bitcoin;
|
|||
exports.native = bitcoindjs;
|
||||
exports.bitcoindjs = bitcoindjs;
|
||||
|
||||
bitcoindjs.Block = Block;
|
||||
bitcoindjs.Transaction = Transaction;
|
||||
bitcoindjs.blockToHex = Block.toHex;
|
||||
bitcoindjs.txToHex = Transaction.toHex;
|
||||
|
||||
exports.Block = Block;
|
||||
exports.block = Block;
|
||||
|
||||
|
|
|
@ -144,6 +144,8 @@ NAN_METHOD(VerifyTransaction);
|
|||
NAN_METHOD(FillTransaction);
|
||||
NAN_METHOD(GetBlockHex);
|
||||
NAN_METHOD(GetTxHex);
|
||||
NAN_METHOD(BlockFromHex);
|
||||
NAN_METHOD(TxFromHex);
|
||||
|
||||
NAN_METHOD(WalletNewAddress);
|
||||
NAN_METHOD(WalletGetAccountAddress);
|
||||
|
@ -1353,6 +1355,64 @@ NAN_METHOD(GetTxHex) {
|
|||
NanReturnValue(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* BlockFromHex
|
||||
*/
|
||||
|
||||
NAN_METHOD(BlockFromHex) {
|
||||
NanScope();
|
||||
|
||||
if (args.Length() < 1 || !args[0]->IsString()) {
|
||||
return NanThrowError(
|
||||
"Usage: bitcoindjs.blockFromHex(hex)");
|
||||
}
|
||||
|
||||
String::AsciiValue hex_string_(args[0]->ToString());
|
||||
std::string hex_string = *hex_string_;
|
||||
|
||||
CBlock cblock;
|
||||
CDataStream ssData(ParseHex(hex_string), SER_NETWORK, PROTOCOL_VERSION);
|
||||
try {
|
||||
ssData >> cblock;
|
||||
} catch (std::exception &e) {
|
||||
NanThrowError("Bad Block decode");
|
||||
}
|
||||
|
||||
Local<Object> jsblock = NanNew<Object>();
|
||||
cblock_to_jsblock(cblock, 0, jsblock);
|
||||
|
||||
NanReturnValue(jsblock);
|
||||
}
|
||||
|
||||
/**
|
||||
* TxFromHex
|
||||
*/
|
||||
|
||||
NAN_METHOD(TxFromHex) {
|
||||
NanScope();
|
||||
|
||||
if (args.Length() < 1 || !args[0]->IsString()) {
|
||||
return NanThrowError(
|
||||
"Usage: bitcoindjs.txFromHex(hex)");
|
||||
}
|
||||
|
||||
String::AsciiValue hex_string_(args[0]->ToString());
|
||||
std::string hex_string = *hex_string_;
|
||||
|
||||
CTransaction ctx;
|
||||
CDataStream ssData(ParseHex(hex_string), SER_NETWORK, PROTOCOL_VERSION);
|
||||
try {
|
||||
ssData >> ctx;
|
||||
} catch (std::exception &e) {
|
||||
NanThrowError("Bad Block decode");
|
||||
}
|
||||
|
||||
Local<Object> jstx = NanNew<Object>();
|
||||
ctx_to_jstx(ctx, 0, jstx);
|
||||
|
||||
NanReturnValue(jstx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wallet
|
||||
*/
|
||||
|
@ -2677,6 +2737,8 @@ jstx_to_ctx(const Local<Object> jstx, CTransaction& ctx) {
|
|||
|
||||
return;
|
||||
|
||||
// XXX This is returning bad hex values for some reason:
|
||||
|
||||
ctx.nMinTxFee = (int64_t)jstx->Get(NanNew<String>("mintxfee"))->IntegerValue();
|
||||
ctx.nMinRelayTxFee = (int64_t)jstx->Get(NanNew<String>("minrelaytxfee"))->IntegerValue();
|
||||
// ctx.CURRENT_VERSION = (unsigned int)jstx->Get(NanNew<String>("current_version"))->Int32Value();
|
||||
|
@ -2784,6 +2846,8 @@ init(Handle<Object> target) {
|
|||
NODE_SET_METHOD(target, "fillTransaction", FillTransaction);
|
||||
NODE_SET_METHOD(target, "getBlockHex", GetBlockHex);
|
||||
NODE_SET_METHOD(target, "getTxHex", GetTxHex);
|
||||
NODE_SET_METHOD(target, "blockFromHex", BlockFromHex);
|
||||
NODE_SET_METHOD(target, "txFromHex", TxFromHex);
|
||||
|
||||
NODE_SET_METHOD(target, "walletNewAddress", WalletNewAddress);
|
||||
NODE_SET_METHOD(target, "walletGetAccountAddress", WalletGetAccountAddress);
|
||||
|
|
Loading…
Reference in New Issue