From 2392ce0a4905512e019f8334b2ad296aeca66cd8 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Tue, 28 Apr 2015 11:49:01 +1000 Subject: [PATCH] tests: verify bitcoin core ASM --- test/bitcoin.core.js | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/test/bitcoin.core.js b/test/bitcoin.core.js index 6511368..f09072a 100644 --- a/test/bitcoin.core.js +++ b/test/bitcoin.core.js @@ -166,7 +166,6 @@ describe('Bitcoin-core', function () { // reverse because test data is big-endian var prevOutHash = bufferutils.reverse(new Buffer(input[0], 'hex')) var prevOutIndex = input[1] - // var prevOutScriptPubKey = input[2] // TODO: we don't have a ASM parser assert.deepEqual(txIn.hash, prevOutHash) @@ -177,6 +176,37 @@ describe('Bitcoin-core', function () { }) }) + describe('Script', function () { + tx_valid.forEach(function (f) { + // Objects that are only a single string are ignored + if (f.length === 1) return + + var inputs = f[0] + + inputs.forEach(function (input) { + var prevOutScriptPubKey = input[2] + .replace(/(^| )1( |$)/g, 'OP_1 ').replace(/(^| )2( |$)/g, 'OP_2 ').replace(/(^| )3( |$)/g, 'OP_3 ') + .replace(/(^| )4( |$)/g, 'OP_4 ').replace(/(^| )5( |$)/g, 'OP_5 ').replace(/(^| )6( |$)/g, 'OP_6 ') + .replace(/(^| )7( |$)/g, 'OP_7 ').replace(/(^| )8( |$)/g, 'OP_8 ').replace(/(^| )9( |$)/g, 'OP_9 ') + .replace(/0x[a-f0-9]+ 0x([a-f0-9]+)/, '$1') + .replace(/DUP/g, 'OP_DUP') + .replace(/NOT/g, 'OP_NOT') + .replace(/HASH160/g, 'OP_HASH160') + .replace(/EQUALVERIFY/g, 'OP_EQUALVERIFY') + .replace(/EQUAL( |$)/g, 'OP_EQUAL ') + .replace(/CHECKSIG/g, 'OP_CHECKSIG') + .replace(/ CHECKMULTISIG/g, ' OP_CHECKMULTISIG') + .replace(/CODESEPARATOR/g, 'OP_CODESEPARATOR') + .replace(/CHECKSIGVERIFY/g, 'OP_CHECKSIGVERIFY') + + it('can decode ' + prevOutScriptPubKey, function () { + // TODO: we can probably do better validation than this + Script.fromASM(prevOutScriptPubKey) + }) + }) + }) + }) + // sighash describe('Transaction', function () { sighash.forEach(function (f) {