MCPcopy Create free account
hub / github.com/ElementsProject/elements / CheckMinimalPush

Function CheckMinimalPush

src/script/interpreter.cpp:324–347  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

322}
323
324bool CheckMinimalPush(const valtype& data, opcodetype opcode) {
325 // Excludes OP_1NEGATE, OP_1-16 since they are by definition minimal
326 assert(0 <= opcode && opcode <= OP_PUSHDATA4);
327 if (data.size() == 0) {
328 // Should have used OP_0.
329 return opcode == OP_0;
330 } else if (data.size() == 1 && data[0] >= 1 && data[0] <= 16) {
331 // Should have used OP_1 .. OP_16.
332 return false;
333 } else if (data.size() == 1 && data[0] == 0x81) {
334 // Should have used OP_1NEGATE.
335 return false;
336 } else if (data.size() <= 75) {
337 // Must have used a direct push (opcode indicating number of bytes pushed + those bytes).
338 return opcode == data.size();
339 } else if (data.size() <= 255) {
340 // Must have used OP_PUSHDATA.
341 return opcode == OP_PUSHDATA1;
342 } else if (data.size() <= 65535) {
343 // Must have used OP_PUSHDATA2.
344 return opcode == OP_PUSHDATA2;
345 }
346 return true;
347}
348
349int FindAndDelete(CScript& script, const CScript& b)
350{

Callers 3

MatchLiquidWatchmanFunction · 0.85
EvalScriptFunction · 0.85
GetMultisigKeyCountFunction · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected