more tests.

This commit is contained in:
Christopher Jeffrey 2016-04-19 04:20:38 -07:00
parent 8c7a367c8e
commit 67f03b5004
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
4 changed files with 37 additions and 3 deletions

2
test/data/tx1.hex Normal file
View File

@ -0,0 +1,2 @@
01000000018177482b65ec42fc43c6b2ad13955d7fdec00edb5dc5ac483d9e31eb06a5a5d5010000006c493046022100955062369843b52db91eb9c1b8fb5ed20b346a62841edfb2ba2097d2a9bc31810221009ace1c91398620b4d1bfa559ca2abcaf6c1a524e606bb5fedf74c9a123ae4ec8012103046d258651af2fbb6acb63414a604314ce94d644a0efd8832ca5275f2bc207c6ffffffff05404b4c0000000000475221033423007d8f263819a2e42becaaf5b06f34cb09919e06304349d950668209eaed21021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452ae404b4c00000000002752010021021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452ae404b4c00000000004752210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179821021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452aeb0f0c304000000001976a9146cce12229300b733cdf0c7ce3079c7503b080fca88ac404b4c000000000047522102c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee521021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452ae00000000
01000000017133b604e8aaa0414a2f3f4c093258acbacd7063cca964cf1dcd3c9afd8be086010000006c493046022100c28bbd00b6ab9af8cf1038139003988f800744d82ed168c39fdcf5958f3348ef022100b7f626763f39d795cc23dc31bb74a6a5b90527c5e909c28b29bbcd3a438aa36101210211b60f23135a806aff2c8f0fbbe620c16ba05a9ca4772735c08a16407f185b34ffffffff02b01df505000000001976a9144e96e751b8f837983046adfc528b11d1dc8200ae88ac00e1f505000000001976a914f5223c1cf62c09a4789c6bdfebaf77b8b7b4dc8f88ac00000000

2
test/data/tx2.hex Normal file
View File

@ -0,0 +1,2 @@
00000000014ae41d5402fafe7b5c8968bcb588ffe91f282edd9f0773e7abedf5fffd4f77ea000000006b483045022100e3d075434dbce66fce6c1843ebb84c56541f542e7c4c29878b7a38de739e7a9a02202f626ccf7d507291ebc7879f573cb5d229e34b8738a47cb5424d9f14e3d54b2f012103ac81c3203de55b31478da413d9bb68b99dc8e33176f9f48e5efcc0900bb41b4affffffff024e61bc00000000001976a914ab37bf4a3af9bc16025b9c64e82f85838bbc792088aca2583905000000001976a914978cdeb4fa9e180044a62fcc345da48e4e14ce6c88ac00000000
0100000002b84833440fb981852d469b12321dc5d30bb71977100ac78a2db1560ae3b65eec010000006a473044022031e0b888652a5c8988b01af7fd1226a0015e38b505868d343e4fe0713b9dd8cc02206c6eeae02976d03147f9fb483ca12a22d16178feee7ab691dc0dd829c375a58e012102d22f286d17a07ac48ad9d22a85db5638082de4bc9fc14f94266bed6318cfffc7ffffffff612b726b05e36cdda64bae4aac34eaf0e4a5ca9a20a4a3ce1d1d2f31d7b94a90000000006b48304502205adf9a67e21c6430cbdd6b2b3037a3f23a393ad25d148dc3068afb01c4a7b8d8022100eabc84aeca4e637bc068a451a98d03f5ad6368e4a701ec4bc6e2548f7e17dc94012103ac81c3203de55b31478da413d9bb68b99dc8e33176f9f48e5efcc0900bb41b4affffffff0200e1f505000000001976a914059fd71b64ece424b1fe97e00082e163ff224ee488aca0f01900000000001976a9146580541e8b9cb88c1659e44f2597b99081ee59eb88ac00000000

4
test/data/tx3.hex Normal file
View File

@ -0,0 +1,4 @@
01000000022f196cf1e5bd426a04f07b882c893b5b5edebad67da6eb50f066c372ed736d5f000000006a47304402201f81ac31b52cb4b1ceb83f97d18476f7339b74f4eecd1a32c251d4c3cccfffa402203c9143c18810ce072969e4132fdab91408816c96b423b2be38eec8a3582ade36012102aa5a2b334bd8f135f11bc5c477bf6307ff98ed52d3ed10f857d5c89adf5b02beffffffffff8755f073f1170c0d519457ffc4acaa7cb2988148163b5dc457fae0fe42aa19000000009200483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a530347304402206da827fb26e569eb740641f9c1a7121ee59141703cbe0f903a22cc7d9a7ec7ac02204729f989b5348b3669ab020b8c4af01acc4deaba7c0d9f8fa9e06b2106cbbfeb01ffffffff010000000000000000016a00000000
010000000143d4b858145e44fbd121dbc592ae931b459f9ec99418a83e8cb6d94330a80c24010000006b483045022100f85c9fceb6d4d38c82a9121acbf68ffffe784017b05554b586464fdbe473340d0220077780b2022c2d97752961c2cb03ed9202cbe57647510746c6bd31276c8a3c5201210314ffdda8717bc586284c05f37192990f774c391e2088516d2983094d3a33e7c3ffffffff02a0860100000000001976a91419660c27383b347112e92caba64fb1d07e9f63bf88ac40c33800000000001976a914825537afe6d73324f862027690651a64c688dfb788ac00000000
01000000017a2133643a513a004ff4d09bbcc7a05d7ee7d3a1d28889f0c06d06f9db1d1d8000000000fd4d0200473044022011cb94542051b8be5563b39da022d7531673ed4b53b6b3f8536794150f7d75e802205a6774c0630964457c2d4a087e5a23167155f661082746dc711ba348ca4d4187014d01025121033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b5faeffffffff01a08601000000000091483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a53037552210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c7152ae00000000

View File

@ -4,9 +4,23 @@ var bcoin = require('../')();
var utils = bcoin.utils;
var constants = bcoin.protocol.constants;
var opcodes = bcoin.protocol.constants.opcodes;
var valid = require('./data/tx_valid');
var invalid = require('./data/tx_invalid');
var sighash = require('./data/sighash');
var valid = require('./data/tx_valid.json');
var invalid = require('./data/tx_invalid.json');
var sighash = require('./data/sighash.json');
var fs = require('fs');
var tx1 = parseTX('data/tx1.hex');
var tx2 = parseTX('data/tx2.hex');
var tx3 = parseTX('data/tx3.hex');
function parseTX(file) {
file = fs.readFileSync(__dirname + '/' + file, 'utf8').trim().split(/\n+/);
var tx = bcoin.tx.fromRaw(file.shift().trim(), 'hex');
for (var i = 0; i < file.length; i++) {
var coin = bcoin.tx.fromRaw(file[i].trim(), 'hex');
tx.fillCoins(coin);
}
return tx;
}
describe('TX', function() {
var parser = bcoin.protocol.parser;
@ -60,6 +74,18 @@ describe('TX', function() {
assert(tx.verify());
});
it('should verify non-minimal output', function() {
assert(tx1.verify(null, true, constants.flags.VERIFY_P2SH));
});
it('should verify tx.version == 0', function() {
assert(tx2.verify(null, true, constants.flags.VERIFY_P2SH));
});
it('should verify sighash_single bug w/ findanddelete', function() {
assert(tx3.verify(null, true, constants.flags.VERIFY_P2SH));
});
function parseTest(data) {
var coins = data[0];
var tx = bcoin.tx.fromRaw(data[1], 'hex');