Browse Source

Fixed keva op.

cn
Jianping Wu 6 years ago
parent
commit
afa40c41b6
  1. 10
      src/script/keva.cpp
  2. 25
      src/script/keva.h

10
src/script/keva.cpp

@ -11,8 +11,9 @@ CKevaScript::CKevaScript (const CScript& script)
{ {
opcodetype nameOp; opcodetype nameOp;
CScript::const_iterator pc = script.begin(); CScript::const_iterator pc = script.begin();
if (!script.GetOp (pc, nameOp)) if (!script.GetOp(pc, nameOp)) {
return; return;
}
opcodetype opcode; opcodetype opcode;
while (true) { while (true) {
@ -33,9 +34,10 @@ CKevaScript::CKevaScript (const CScript& script)
// Move the pc to after any DROP or NOP. // Move the pc to after any DROP or NOP.
while (opcode == OP_DROP || opcode == OP_2DROP || opcode == OP_NOP) { while (opcode == OP_DROP || opcode == OP_2DROP || opcode == OP_NOP) {
if (!script.GetOp (pc, opcode)) if (!script.GetOp(pc, opcode)) {
break; break;
} }
}
pc--; pc--;
/* Now, we have the args and the operation. Check if we have indeed /* Now, we have the args and the operation. Check if we have indeed
@ -43,13 +45,13 @@ CKevaScript::CKevaScript (const CScript& script)
op and address members, if everything is valid. */ op and address members, if everything is valid. */
switch (nameOp) { switch (nameOp) {
case OP_KEVA_PUT: case OP_KEVA_PUT:
if (args.size () != 1) { if (args.size() != 3) {
return; return;
} }
break; break;
case OP_KEVA_NAMESPACE: case OP_KEVA_NAMESPACE:
if (args.size () != 1) { if (args.size() != 3) {
return; return;
} }
break; break;

25
src/script/keva.h

@ -7,8 +7,6 @@
#include <script/script.h> #include <script/script.h>
typedef std::vector<unsigned char> valtype;
class uint160; class uint160;
/** /**
@ -51,8 +49,7 @@ public:
* Return whether this is a (valid) name script. * Return whether this is a (valid) name script.
* @return True iff this is a name operation. * @return True iff this is a name operation.
*/ */
inline bool inline bool isKevaOp() const
isKevaOp () const
{ {
switch (op) { switch (op) {
case OP_KEVA_PUT: case OP_KEVA_PUT:
@ -136,16 +133,15 @@ public:
} }
/** /**
* Return the name operation value. This call is only valid for * Return namespace's display name. This call is only valid for
* OP_KEVA_PUT. * OP_KEVA_NAMESPACE.
* @return The name operation's value. * @return The namespace's display name.
*/ */
inline const valtype& getOpNamespaceValue() const inline const valtype& getOpNamespaceDisplayName() const
{ {
switch (op) { switch (op) {
case OP_KEVA_PUT: case OP_KEVA_NAMESPACE:
// args[1] is namespace return args[1];
return args[2];
default: default:
assert (false); assert (false);
@ -161,10 +157,7 @@ public:
{ {
switch (op) { switch (op) {
case OP_KEVA_PUT: case OP_KEVA_PUT:
return args[0]; return args[1];
case OP_KEVA_NAMESPACE:
return args[0];
default: default:
assert(false); assert(false);
@ -180,7 +173,7 @@ public:
{ {
switch (op) { switch (op) {
case OP_KEVA_PUT: case OP_KEVA_PUT:
// args[1] is namespace // args[0] is namespace, args[1] is key
return args[2]; return args[2];
default: default:

Loading…
Cancel
Save