txscript: Increase maximum allowed nulldata bytes
This change increases the maximum allowed bytes allowed in pushed data to be considered a nulldata transaction. This matches the current value the reference implementation uses by default.
This commit is contained in:
parent
db8fa6f850
commit
436fb8203c
2 changed files with 19 additions and 5 deletions
|
@ -134,6 +134,10 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// maxDataCarrierSize is the maximum number of bytes allowed in pushed
|
||||||
|
// data to be considered a nulldata transaction
|
||||||
|
maxDataCarrierSize = 80
|
||||||
|
|
||||||
// maxStackSize is the maximum combined height of stack and alt stack
|
// maxStackSize is the maximum combined height of stack and alt stack
|
||||||
// during execution.
|
// during execution.
|
||||||
maxStackSize = 1000
|
maxStackSize = 1000
|
||||||
|
@ -303,7 +307,8 @@ func isMultiSig(pops []parsedOpcode) bool {
|
||||||
// false otherwise.
|
// false otherwise.
|
||||||
func isNullData(pops []parsedOpcode) bool {
|
func isNullData(pops []parsedOpcode) bool {
|
||||||
// A nulldata transaction is either a single OP_RETURN or an
|
// A nulldata transaction is either a single OP_RETURN or an
|
||||||
// OP_RETURN SMALLDATA (where SMALLDATA is a push data up to 40 bytes).
|
// OP_RETURN SMALLDATA (where SMALLDATA is a push data up to
|
||||||
|
// maxDataCarrierSize bytes).
|
||||||
l := len(pops)
|
l := len(pops)
|
||||||
if l == 1 && pops[0].opcode.value == OP_RETURN {
|
if l == 1 && pops[0].opcode.value == OP_RETURN {
|
||||||
return true
|
return true
|
||||||
|
@ -312,7 +317,7 @@ func isNullData(pops []parsedOpcode) bool {
|
||||||
return l == 2 &&
|
return l == 2 &&
|
||||||
pops[0].opcode.value == OP_RETURN &&
|
pops[0].opcode.value == OP_RETURN &&
|
||||||
pops[1].opcode.value <= OP_PUSHDATA4 &&
|
pops[1].opcode.value <= OP_PUSHDATA4 &&
|
||||||
len(pops[1].data) <= 40
|
len(pops[1].data) <= maxDataCarrierSize
|
||||||
}
|
}
|
||||||
|
|
||||||
// isPushOnly returns true if the script only pushes data, false otherwise.
|
// isPushOnly returns true if the script only pushes data, false otherwise.
|
||||||
|
@ -1728,7 +1733,6 @@ func CalcScriptInfo(sigscript, pkscript []byte, bip16 bool) (*ScriptInfo, error)
|
||||||
|
|
||||||
shInputs := expectedInputs(shPops, shClass)
|
shInputs := expectedInputs(shPops, shClass)
|
||||||
if shInputs == -1 {
|
if shInputs == -1 {
|
||||||
// We have no fucking clue, then.
|
|
||||||
si.ExpectedInputs = -1
|
si.ExpectedInputs = -1
|
||||||
} else {
|
} else {
|
||||||
si.ExpectedInputs += shInputs
|
si.ExpectedInputs += shInputs
|
||||||
|
|
|
@ -2263,7 +2263,12 @@ var scriptTypeTests = []scriptTypeTest{
|
||||||
script: []byte{
|
script: []byte{
|
||||||
txscript.OP_RETURN,
|
txscript.OP_RETURN,
|
||||||
txscript.OP_PUSHDATA1,
|
txscript.OP_PUSHDATA1,
|
||||||
0x28, // 40
|
0x50, // 80
|
||||||
|
0x04, 0x67, 0x08, 0xaf, 0xdb, 0x0f, 0xe5, 0x54,
|
||||||
|
0x82, 0x71, 0x96, 0x7f, 0x1a, 0x67, 0x13, 0x0b,
|
||||||
|
0x71, 0x05, 0xcd, 0x6a, 0x82, 0x8e, 0x03, 0x90,
|
||||||
|
0x9a, 0x67, 0x96, 0x2e, 0x0e, 0xa1, 0xf6, 0x1d,
|
||||||
|
0xeb, 0x64, 0x9f, 0x6b, 0xc3, 0xf4, 0xce, 0xf3,
|
||||||
0x04, 0x67, 0x08, 0xaf, 0xdb, 0x0f, 0xe5, 0x54,
|
0x04, 0x67, 0x08, 0xaf, 0xdb, 0x0f, 0xe5, 0x54,
|
||||||
0x82, 0x71, 0x96, 0x7f, 0x1a, 0x67, 0x13, 0x0b,
|
0x82, 0x71, 0x96, 0x7f, 0x1a, 0x67, 0x13, 0x0b,
|
||||||
0x71, 0x05, 0xcd, 0x6a, 0x82, 0x8e, 0x03, 0x90,
|
0x71, 0x05, 0xcd, 0x6a, 0x82, 0x8e, 0x03, 0x90,
|
||||||
|
@ -2278,7 +2283,12 @@ var scriptTypeTests = []scriptTypeTest{
|
||||||
script: []byte{
|
script: []byte{
|
||||||
txscript.OP_RETURN,
|
txscript.OP_RETURN,
|
||||||
txscript.OP_PUSHDATA1,
|
txscript.OP_PUSHDATA1,
|
||||||
0x29, // 41
|
0x51, // 81
|
||||||
|
0x04, 0x67, 0x08, 0xaf, 0xdb, 0x0f, 0xe5, 0x54,
|
||||||
|
0x82, 0x71, 0x96, 0x7f, 0x1a, 0x67, 0x13, 0x0b,
|
||||||
|
0x71, 0x05, 0xcd, 0x6a, 0x82, 0x8e, 0x03, 0x90,
|
||||||
|
0x9a, 0x67, 0x96, 0x2e, 0x0e, 0xa1, 0xf6, 0x1d,
|
||||||
|
0xeb, 0x64, 0x9f, 0x6b, 0xc3, 0xf4, 0xce, 0xf3,
|
||||||
0x04, 0x67, 0x08, 0xaf, 0xdb, 0x0f, 0xe5, 0x54,
|
0x04, 0x67, 0x08, 0xaf, 0xdb, 0x0f, 0xe5, 0x54,
|
||||||
0x82, 0x71, 0x96, 0x7f, 0x1a, 0x67, 0x13, 0x0b,
|
0x82, 0x71, 0x96, 0x7f, 0x1a, 0x67, 0x13, 0x0b,
|
||||||
0x71, 0x05, 0xcd, 0x6a, 0x82, 0x8e, 0x03, 0x90,
|
0x71, 0x05, 0xcd, 0x6a, 0x82, 0x8e, 0x03, 0x90,
|
||||||
|
|
Loading…
Reference in a new issue