private ImmutableArray<byte> GetPushInt64Script(long value)
{
var script = new ScriptBuilder();
// push 0 onto the stack using OP_0
if (value == 0)
{
script.WriteOp(ScriptOp.OP_0);
}
// push -1 onto the stack using OP_1NEGATE
else if (value == -1)
{
script.WriteOp(ScriptOp.OP_1NEGATE);
}
// push 1-16 onto the stack using OP_1 to OP_16
else if (value >= 1 && value <= 16)
{
script.WriteOp((ScriptOp)(value + ((long)ScriptOp.OP_1 - 1)));
}
else
{
var valueBytes = SerializeScriptValue(value);
script.WritePushData(valueBytes);
}
return script.GetScript().ToImmutableArray();
}