mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-14 00:58:09 +00:00
Fixed keva op.
This commit is contained in:
parent
17a422025e
commit
afa40c41b6
@ -10,31 +10,33 @@ CKevaScript::CKevaScript (const CScript& script)
|
||||
: op(OP_NOP), address(script)
|
||||
{
|
||||
opcodetype nameOp;
|
||||
CScript::const_iterator pc = script.begin ();
|
||||
if (!script.GetOp (pc, nameOp))
|
||||
CScript::const_iterator pc = script.begin();
|
||||
if (!script.GetOp(pc, nameOp)) {
|
||||
return;
|
||||
}
|
||||
|
||||
opcodetype opcode;
|
||||
while (true) {
|
||||
valtype vch;
|
||||
|
||||
if (!script.GetOp (pc, opcode, vch)) {
|
||||
if (!script.GetOp(pc, opcode, vch)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (opcode == OP_DROP || opcode == OP_2DROP || opcode == OP_NOP) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!(opcode >= 0 && opcode <= OP_PUSHDATA4)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
args.push_back (vch);
|
||||
}
|
||||
|
||||
// Move the pc to after any DROP or NOP.
|
||||
while (opcode == OP_DROP || opcode == OP_2DROP || opcode == OP_NOP) {
|
||||
if (!script.GetOp (pc, opcode))
|
||||
break;
|
||||
if (!script.GetOp(pc, opcode)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
pc--;
|
||||
|
||||
@ -43,15 +45,15 @@ CKevaScript::CKevaScript (const CScript& script)
|
||||
op and address members, if everything is valid. */
|
||||
switch (nameOp) {
|
||||
case OP_KEVA_PUT:
|
||||
if (args.size () != 1) {
|
||||
if (args.size() != 3) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case OP_KEVA_NAMESPACE:
|
||||
if (args.size () != 1) {
|
||||
if (args.size() != 3) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -59,7 +61,7 @@ CKevaScript::CKevaScript (const CScript& script)
|
||||
}
|
||||
|
||||
op = nameOp;
|
||||
address = CScript (pc, script.end ());
|
||||
address = CScript(pc, script.end());
|
||||
}
|
||||
|
||||
CScript
|
||||
|
@ -7,8 +7,6 @@
|
||||
|
||||
#include <script/script.h>
|
||||
|
||||
typedef std::vector<unsigned char> valtype;
|
||||
|
||||
class uint160;
|
||||
|
||||
/**
|
||||
@ -36,7 +34,7 @@ public:
|
||||
* Default constructor. This enables us to declare a variable
|
||||
* and initialise it later via assignment.
|
||||
*/
|
||||
inline CKevaScript ()
|
||||
inline CKevaScript()
|
||||
: op(OP_NOP)
|
||||
{}
|
||||
|
||||
@ -45,14 +43,13 @@ public:
|
||||
* the member variables representing the "picked apart" name script.
|
||||
* @param script The ordinary script to parse.
|
||||
*/
|
||||
explicit CKevaScript (const CScript& script);
|
||||
explicit CKevaScript(const CScript& script);
|
||||
|
||||
/**
|
||||
* Return whether this is a (valid) name script.
|
||||
* @return True iff this is a name operation.
|
||||
*/
|
||||
inline bool
|
||||
isKevaOp () const
|
||||
inline bool isKevaOp() const
|
||||
{
|
||||
switch (op) {
|
||||
case OP_KEVA_PUT:
|
||||
@ -86,10 +83,10 @@ public:
|
||||
inline opcodetype getKevaOp() const
|
||||
{
|
||||
switch (op) {
|
||||
case OP_KEVA_PUT:
|
||||
case OP_KEVA_PUT:
|
||||
return op;
|
||||
|
||||
case OP_KEVA_NAMESPACE:
|
||||
case OP_KEVA_NAMESPACE:
|
||||
return op;
|
||||
|
||||
default:
|
||||
@ -136,16 +133,15 @@ public:
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the name operation value. This call is only valid for
|
||||
* OP_KEVA_PUT.
|
||||
* @return The name operation's value.
|
||||
* Return namespace's display name. This call is only valid for
|
||||
* OP_KEVA_NAMESPACE.
|
||||
* @return The namespace's display name.
|
||||
*/
|
||||
inline const valtype& getOpNamespaceValue() const
|
||||
inline const valtype& getOpNamespaceDisplayName() const
|
||||
{
|
||||
switch (op) {
|
||||
case OP_KEVA_PUT:
|
||||
// args[1] is namespace
|
||||
return args[2];
|
||||
case OP_KEVA_NAMESPACE:
|
||||
return args[1];
|
||||
|
||||
default:
|
||||
assert (false);
|
||||
@ -161,10 +157,7 @@ public:
|
||||
{
|
||||
switch (op) {
|
||||
case OP_KEVA_PUT:
|
||||
return args[0];
|
||||
|
||||
case OP_KEVA_NAMESPACE:
|
||||
return args[0];
|
||||
return args[1];
|
||||
|
||||
default:
|
||||
assert(false);
|
||||
@ -180,7 +173,7 @@ public:
|
||||
{
|
||||
switch (op) {
|
||||
case OP_KEVA_PUT:
|
||||
// args[1] is namespace
|
||||
// args[0] is namespace, args[1] is key
|
||||
return args[2];
|
||||
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user