VerifyTransaction

This commit is contained in:
Christopher Jeffrey 2014-09-26 11:34:55 -07:00
parent 41c0cb5a4e
commit e2a8b95651
2 changed files with 37 additions and 2 deletions

View File

@ -324,7 +324,8 @@ function Block(data) {
}
Block.prototype.verify = function() {
return this._verified = this._verified || bitcoindjs.verifyBlock(this.toHex());
return this._verified = this._verified
|| bitcoindjs.verifyBlock(this.toHex());
};
Block.prototype.toBinary = function() {
@ -441,6 +442,11 @@ function Transaction(data) {
this.toHex();
}
Transaction.prototype.verify = function() {
return this._verified = this._verified
|| bitcoindjs.verifyTransaction(this.toHex());
};
Transaction.prototype.getSerializeSize = function() {
;
};

View File

@ -127,6 +127,7 @@ NAN_METHOD(PollBlocks);
NAN_METHOD(PollMempool);
NAN_METHOD(BroadcastTx);
NAN_METHOD(VerifyBlock);
NAN_METHOD(VerifyTransaction);
static void
async_start_node_work(uv_work_t *req);
@ -1102,7 +1103,6 @@ NAN_METHOD(VerifyBlock) {
CBlock block;
CDataStream ssData(ParseHex(blockHex), SER_NETWORK, PROTOCOL_VERSION);
CTransaction tx;
ssData >> block;
CValidationState state;
@ -1111,6 +1111,34 @@ NAN_METHOD(VerifyBlock) {
NanReturnValue(NanNew<Boolean>(valid));
}
/**
* VerifyTransaction
*/
NAN_METHOD(VerifyTransaction) {
NanScope();
if (args.Length() < 1 || !args[0]->IsString()) {
return NanThrowError(
"Usage: bitcoindjs.verifyTransaction(txHex)");
}
String::Utf8Value txHex_(args[0]->ToString());
std::string txHex = std::string(*txHex_);
CTransaction tx;
CDataStream ssData(ParseHex(txHex), SER_NETWORK, PROTOCOL_VERSION);
ssData >> tx;
CValidationState state;
bool valid = CheckTransaction(tx, state);
string reason;
bool standard = IsStandardTx(tx, reason);
NanReturnValue(NanNew<Boolean>(valid && standard));
}
/**
* Conversions
*/
@ -1343,6 +1371,7 @@ init(Handle<Object> target) {
NODE_SET_METHOD(target, "pollMempool", PollMempool);
NODE_SET_METHOD(target, "broadcastTx", BroadcastTx);
NODE_SET_METHOD(target, "verifyBlock", VerifyBlock);
NODE_SET_METHOD(target, "verifyTransaction", VerifyTransaction);
}
NODE_MODULE(bitcoindjs, init)