From 7f5b9ae2fd71635fb763548b7c5e7a4ab8528eaa Mon Sep 17 00:00:00 2001 From: Roy Lee Date: Thu, 14 Jun 2018 19:12:43 -0700 Subject: [PATCH] [lbry] txscript: recognize LBRY claim script OPCODES --- txscript/opcode.go | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/txscript/opcode.go b/txscript/opcode.go index a878a966..fff64e6e 100644 --- a/txscript/opcode.go +++ b/txscript/opcode.go @@ -219,9 +219,9 @@ const ( OP_CHECKSEQUENCEVERIFY = 0xb2 // 178 - AKA OP_NOP3 OP_NOP4 = 0xb3 // 179 OP_NOP5 = 0xb4 // 180 - OP_NOP6 = 0xb5 // 181 - OP_NOP7 = 0xb6 // 182 - OP_NOP8 = 0xb7 // 183 + OP_CLAIMNAME = 0xb5 // 181 - AKA OP_NOP6 + OP_SUPPORTCLAIM = 0xb6 // 182 - AKA OP_NOP7 + OP_UPDATECLAIM = 0xb7 // 183 - AKA OP_NOP8 OP_NOP9 = 0xb8 // 184 OP_NOP10 = 0xb9 // 185 OP_UNKNOWN186 = 0xba // 186 @@ -500,14 +500,14 @@ var opcodeArray = [256]opcode{ OP_CHECKMULTISIGVERIFY: {OP_CHECKMULTISIGVERIFY, "OP_CHECKMULTISIGVERIFY", 1, opcodeCheckMultiSigVerify}, // Reserved opcodes. - OP_NOP1: {OP_NOP1, "OP_NOP1", 1, opcodeNop}, - OP_NOP4: {OP_NOP4, "OP_NOP4", 1, opcodeNop}, - OP_NOP5: {OP_NOP5, "OP_NOP5", 1, opcodeNop}, - OP_NOP6: {OP_NOP6, "OP_NOP6", 1, opcodeNop}, - OP_NOP7: {OP_NOP7, "OP_NOP7", 1, opcodeNop}, - OP_NOP8: {OP_NOP8, "OP_NOP8", 1, opcodeNop}, - OP_NOP9: {OP_NOP9, "OP_NOP9", 1, opcodeNop}, - OP_NOP10: {OP_NOP10, "OP_NOP10", 1, opcodeNop}, + OP_NOP1: {OP_NOP1, "OP_NOP1", 1, opcodeNop}, + OP_NOP4: {OP_NOP4, "OP_NOP4", 1, opcodeNop}, + OP_NOP5: {OP_NOP5, "OP_NOP5", 1, opcodeNop}, + OP_CLAIMNAME: {OP_CLAIMNAME, "OP_CLAIMNAME", 1, opcodeClaimScript}, + OP_SUPPORTCLAIM: {OP_SUPPORTCLAIM, "OP_SUPPORTCLAIM", 1, opcodeClaimScript}, + OP_UPDATECLAIM: {OP_UPDATECLAIM, "OP_UPDATECLAIM", 1, opcodeClaimScript}, + OP_NOP9: {OP_NOP9, "OP_NOP9", 1, opcodeNop}, + OP_NOP10: {OP_NOP10, "OP_NOP10", 1, opcodeNop}, // Undefined opcodes. OP_UNKNOWN186: {OP_UNKNOWN186, "OP_UNKNOWN186", 1, opcodeInvalid}, @@ -981,7 +981,7 @@ func opcodeN(op *parsedOpcode, vm *Engine) error { func opcodeNop(op *parsedOpcode, vm *Engine) error { switch op.opcode.value { case OP_NOP1, OP_NOP4, OP_NOP5, - OP_NOP6, OP_NOP7, OP_NOP8, OP_NOP9, OP_NOP10: + OP_NOP9, OP_NOP10: if vm.hasFlag(ScriptDiscourageUpgradableNops) { str := fmt.Sprintf("OP_NOP%d reserved for soft-fork "+ "upgrades", op.opcode.value-(OP_NOP1-1)) @@ -991,6 +991,11 @@ func opcodeNop(op *parsedOpcode, vm *Engine) error { return nil } +func opcodeClaimScript(op *parsedOpcode, vm *Engine) error { + vm.dstack.PushByteArray([]byte{0}) + return nil +} + // popIfBool enforces the "minimal if" policy during script execution if the // particular flag is set. If so, in order to eliminate an additional source // of nuisance malleability, post-segwit for version 0 witness programs, we now