Browse Source

Script: add createPubKeyScriptPubKey

hk-custom-address
Daniel Cousens 11 years ago
parent
commit
08951be66f
  1. 17
      src/script.js
  2. 8
      test/fixtures/script.json
  3. 25
      test/script.js

17
src/script.js

@ -268,6 +268,16 @@ Script.prototype.writeBytes = function(data) {
this.chunks.push(data) this.chunks.push(data)
} }
// {pubKey} OP_CHECKSIG
Script.createPubKeyScriptPubKey = function(pubKey) {
var script = new Script()
script.writeBytes(pubKey.toBuffer())
script.writeOp(opcodes.OP_CHECKSIG)
return script
}
// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
Script.createPubKeyHashScriptPubKey = function(hash) { Script.createPubKeyHashScriptPubKey = function(hash) {
var script = new Script() var script = new Script()
@ -309,6 +319,13 @@ Script.createMultisigScriptPubKey = function(m, pubKeys) {
return script return script
} }
// {signature}
Script.createPubKeyScriptSig = function(signature) {
var script = new Script()
script.writeBytes(signature)
return script
}
// {signature} {pubKey} // {signature} {pubKey}
Script.createPubKeyHashScriptSig = function(signature, pubKey) { Script.createPubKeyHashScriptSig = function(signature, pubKey) {
var script = new Script() var script = new Script()

8
test/fixtures/script.json

@ -1,5 +1,13 @@
{ {
"valid": [ "valid": [
{
"description": "pay-to-PubKey",
"hex": "21031f1e68f82112b373f0fe980b3a89d212d2b5c01fb51eb25acb8b4c4b4299ce95ac",
"type": "pubkey",
"hash": "26e645ab170255f2a0a82d29e48f35b14ae7c826",
"pubKey": "031f1e68f82112b373f0fe980b3a89d212d2b5c01fb51eb25acb8b4c4b4299ce95",
"scriptPubKey": true
},
{ {
"description": "P2SH ScriptPubKey", "description": "P2SH ScriptPubKey",
"hex": "a914e8c300c87986efa84c37c0519929019ef86eb5b487", "hex": "a914e8c300c87986efa84c37c0519929019ef86eb5b487",

25
test/script.js

@ -70,21 +70,34 @@ describe('Script', function() {
describe('pay-to-pubKeyHash', function() { describe('pay-to-pubKeyHash', function() {
it('matches the test data', function() { it('matches the test data', function() {
// FIXME: bad
var f = fixtures.valid[2]
var address = Address.fromBase58Check('19E6FV3m3kEPoJD5Jz6dGKdKwTVvjsWUvu') var address = Address.fromBase58Check('19E6FV3m3kEPoJD5Jz6dGKdKwTVvjsWUvu')
var script = Script.createPubKeyHashScriptPubKey(address.hash) var script = Script.createPubKeyHashScriptPubKey(address.hash)
// FIXME: not good TDD assert.equal(script.toHex(), f.hex)
assert.equal(script.toHex(), fixtures.valid[1].hex) })
})
describe('pay-to-pubkey', function() {
it('matches the test data', function() {
// FIXME: bad
var f = fixtures.valid[0]
var pubKey = ECPubKey.fromHex(f.pubKey)
var script = Script.createPubKeyScriptPubKey(pubKey)
assert.equal(script.toHex(), f.hex)
}) })
}) })
describe('pay-to-scriptHash', function() { describe('pay-to-scriptHash', function() {
it('matches the test data', function() { it('matches the test data', function() {
var hash = new Buffer('e8c300c87986efa84c37c0519929019ef86eb5b4', 'hex') // FIXME: bad
var script = Script.createP2SHScriptPubKey(hash) var f = fixtures.valid[1]
var address = Address.fromBase58Check('3NukJ6fYZJ5Kk8bPjycAnruZkE5Q7UW7i8')
var script = Script.createP2SHScriptPubKey(address.hash)
// FIXME: not good TDD assert.equal(script.toHex(), f.hex)
assert.equal(script.toHex(), fixtures.valid[0].hex)
}) })
}) })

Loading…
Cancel
Save