aboutsummaryrefslogtreecommitdiffstats
path: root/JSONSchema
diff options
context:
space:
mode:
Diffstat (limited to 'JSONSchema')
-rw-r--r--JSONSchema/bc-filler-schema.json333
-rw-r--r--JSONSchema/bc-schema.json774
-rw-r--r--JSONSchema/definitions.json320
-rw-r--r--JSONSchema/st-filler-schema.json438
-rw-r--r--JSONSchema/st-schema.json354
-rwxr-xr-xJSONSchema/validate.js82
-rw-r--r--JSONSchema/vm-filler-schema.json162
-rw-r--r--JSONSchema/vm-schema.json141
8 files changed, 1566 insertions, 1038 deletions
diff --git a/JSONSchema/bc-filler-schema.json b/JSONSchema/bc-filler-schema.json
new file mode 100644
index 000000000..d3c8f9d6d
--- /dev/null
+++ b/JSONSchema/bc-filler-schema.json
@@ -0,0 +1,333 @@
+{
+ "definitions": {
+ "BadHexData": {
+ "pattern": "^0x[0-9a-zA-Z]*$",
+ "type": "string"
+ },
+ "Block": {
+ "additionalProperties": false,
+ "properties": {
+ "//comment": {
+ "type": "string"
+ },
+ "blockHeader": {
+ "$ref": "#/definitions/BlockHeader"
+ },
+ "blockHeaderPremine": {
+
+ },
+ "blocknumber": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "chainname": {
+ "type": "string"
+ },
+ "chainnetwork": {
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ },
+ "expectExceptionALL": {
+ "type": "string"
+ },
+ "expectExceptionByzantium": {
+ "type": "string"
+ },
+ "expectExceptionConstantinople": {
+ "type": "string"
+ },
+ "expectExceptionEIP150": {
+ "type": "string"
+ },
+ "expectExceptionEIP158": {
+ "type": "string"
+ },
+ "expectExceptionFrontier": {
+ "type": "string"
+ },
+ "expectExceptionHomestead": {
+ "type": "string"
+ },
+ "rlp": {
+ "$ref": "#/definitions/BadHexData"
+ },
+ "transactions": {
+ "items": {
+ "$ref": "#/definitions/Transaction"
+ },
+ "type": "array"
+ },
+ "uncleHeaders": {
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "BlockHeader": {
+ "properties": {
+ "bloom": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "coinbase": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "difficulty": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "extraData": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "gasLimit": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "gasUsed": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "hash": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "mixHash": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "number": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "parentHash": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "receiptTrie": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "stateRoot": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "timestamp": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "transactionsTrie": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "uncleHash": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ }
+ }
+ },
+ "BlockHeaderPremine": {
+ "properties": {
+ "difficulty": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "gasLimit": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "timestamp": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "updatePow": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ }
+ }
+ },
+ "NullSenderTransaction": {
+ "additionalProperties": true,
+ "not": {
+ "required": [
+ "secretKey"
+ ]
+ },
+ "properties": {
+ "data": {
+ "items": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "type": "array"
+ },
+ "gasLimit": {
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "type": "array"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "r": {
+ "$ref": "#/definitions/TxSigR"
+ },
+ "s": {
+ "$ref": "#/definitions/TxSigS"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "v": {
+ "$ref": "#/definitions/TxSigV"
+ },
+ "value": {
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "data",
+ "gasLimit",
+ "gasPrice",
+ "nonce",
+ "r",
+ "s",
+ "v",
+ "to",
+ "value"
+ ],
+ "type": "object"
+ },
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "code": {
+ "$ref": "#/definitions/LLLCode"
+ },
+ "nonce": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "balance",
+ "code",
+ "nonce"
+ ],
+ "type": "object"
+ },
+ "Transaction": {
+ "additionalProperties": true,
+ "not": {
+ "required": [
+ "r, s, v"
+ ]
+ },
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "gasLimit": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "secretKey": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "value": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ }
+ },
+ "required": [
+ "data",
+ "gasLimit",
+ "gasPrice",
+ "nonce",
+ "to",
+ "value"
+ ],
+ "type": "object"
+ },
+ "TxSigR": {
+ "oneOf": [
+ {
+ "enum": [
+ "0x00"
+ ]
+ }
+ ]
+ },
+ "TxSigS": {
+ "oneOf": [
+ {
+ "enum": [
+ "0x00"
+ ]
+ }
+ ]
+ },
+ "TxSigV": {
+ "description": "a value of 0 is an invalid chainId, but used in a test case",
+ "oneOf": [
+ {
+ "enum": [
+ "0x00",
+ "0x01"
+ ]
+ }
+ ]
+ }
+ },
+ "patternProperties": {
+ "^.*$": {
+ "properties": {
+ "blocks": {
+ "items": {
+ "$ref": "#/definitions/Block"
+ },
+ "type": "array"
+ },
+ "genesisBlockHeader": {
+ "$ref": "#/definitions/BlockHeader"
+ },
+ "genesisRLP": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "expect": {
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "poststate account address with 0x prefix"
+ }
+ }
+ },
+ "pre": {
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "prestate account address with 0x prefix"
+ }
+ }
+ }
+ },
+ "required": [
+ "pre",
+ "blocks",
+ "genesisBlockHeader"
+ ],
+ "type": "object"
+ }
+ }
+}
diff --git a/JSONSchema/bc-schema.json b/JSONSchema/bc-schema.json
index 26ef855e1..729638d1a 100644
--- a/JSONSchema/bc-schema.json
+++ b/JSONSchema/bc-schema.json
@@ -1,491 +1,317 @@
{
- "definitions": {
- "Block": {
- "type": "object",
- "properties": {
- "blockHeader": {
- "$ref": "#/definitions/BlockHeader"
+ "definitions": {
+ "BadHexData": {
+ "pattern": "^0x[0-9a-zA-Z]*$",
+ "type": "string"
},
- "rlp": {
- "$ref": "#/definitions/HexData"
- },
- "transactions": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Transaction"
- }
- },
- "uncleHeaders": {
- "type": "array"
- },
- "expectExceptionHomestead": {
- "type": "string"
- },
- "expectExceptionFrontier": {
- "type": "string"
- },
- "expectExceptionEIP158": {
- "type": "string"
- },
- "expectExceptionEIP150": {
- "type": "string"
- },
- "expectExceptionALL": {
- "type": "string"
- },
- "expectExceptionByzantium": {
- "type": "string"
- },
- "expectExceptionConstantinople": {
- "type": "string"
- },
- "blocknumber": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "chainname": {
- "type": "string"
- },
- "chainnetwork": {
- "type": "string"
- },
- "comment": {
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- "BlockHeader": {
- "properties": {
- "bloom": {
- "$ref": "#/definitions/HexData"
- },
- "coinbase": {
- "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
- },
- "difficulty": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "extraData": {
- "$ref": "#/definitions/HexMaybePrefixOrEmpty"
- },
- "gasLimit": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "gasUsed": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "hash": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "mixHash": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "nonce": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "number": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "parentHash": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "receiptTrie": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "stateRoot": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "timestamp": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "transactionsTrie": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "uncleHash": {
- "$ref": "#/definitions/ConfusedHexType"
- }
- }
- },
- "EmptyString": {
- "type": "string",
- "pattern": "^$"
- },
- "HexData": {
- "description": "Hex data. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
- "pattern": "^0x([0-9a-fA-F][0-9a-fA-F])*$",
- "type": "string"
- },
- "HexQuantity": {
- "description": "Hex quantity. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
- "pattern": "(^0x0$)|(^0x[1-9a-fA-F][0-9a-fA-F]*$)",
- "type": "string"
- },
- "ConfusedHexType": {
- "anyOf": [
- {
- "$ref": "#/definitions/HexData"
- },
- {
- "$ref": "#/definitions/HexQuantity"
- }
- ]
- },
- "HexDataOrEmpty": {
- "oneOf": [
- {
- "$ref": "#/definitions/HexData"
- },
- {
- "$ref": "#/definitions/EmptyString"
- }
- ]
- },
- "HexNoPrefix": {
- "pattern": "^([0-9a-fA-F][0-9a-fA-F])+$",
- "type": "string"
- },
- "HexMaybePrefix": {
- "oneOf": [
- {
- "$ref": "#/definitions/HexNoPrefix"
- },
- {
- "$ref": "#/definitions/HexData"
- }
- ]
- },
- "HexMaybePrefixOrEmpty": {
- "oneOf": [
- {
- "$ref": "#/definitions/HexMaybePrefix"
- },
- {
- "$ref": "#/definitions/EmptyString"
- }
- ]
- },
- "IntegerString": {
- "pattern": "^[0-9]+$",
- "type": "string"
- },
- "IntegerOrEmpty": {
- "oneOf": [
- {
- "$ref": "#/definitions/IntegerString"
- },
- {
- "$ref": "#/definitions/EmptyString"
- }
- ]
- },
- "IntegerOrNumber": {
- "oneOf": [
- {
- "$ref": "#/definitions/IntegerString"
- },
- {
- "type": "number"
- }
- ]
- },
- "IntegerOrNumberOrConfusedHex": {
- "oneOf": [
- {
- "$ref": "#/definitions/IntegerOrNumber"
- },
- {
- "$ref": "#/definitions/ConfusedHexType"
- }
- ]
- },
- "IntegerOrEmptyOrHexQuantity": {
- "oneOf": [
- {
- "$ref": "#/definitions/IntegerOrEmpty"
- },
- {
- "$ref": "#/definitions/HexQuantity"
- }
- ]
- },
- "IntegerOrHexQuantity": {
- "oneOf": [
- {
- "$ref": "#/definitions/IntegerString"
- },
- {
- "$ref": "#/definitions/HexQuantity"
- }
- ]
- },
- "IntegerOrConfusedHex": {
- "anyOf": [
- {
- "$ref": "#/definitions/IntegerString"
- },
- {
- "$ref": "#/definitions/ConfusedHexType"
- }
- ]
- },
- "IntegerOrEmptyOrConfusedHex": {
- "oneOf": [
- {
- "$ref": "#/definitions/IntegerOrEmpty"
- },
- {
- "$ref": "#/definitions/ConfusedHexType"
- }
- ]
- },
- "PreStateAccount": {
- "type": "object",
- "additionalproperties": true,
- "properties": {
- "balance": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "code": {
- "$ref": "#/definitions/HexMaybePrefixOrEmpty"
- },
- "nonce": {
- "$ref": "#/definitions/ConfusedHexType"
+ "Block": {
+ "additionalProperties": false,
+ "properties": {
+ "blockHeader": {
+ "$ref": "#/definitions/BlockHeader"
+ },
+ "blocknumber": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "chainname": {
+ "type": "string"
+ },
+ "chainnetwork": {
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ },
+ "expectExceptionALL": {
+ "type": "string"
+ },
+ "expectExceptionByzantium": {
+ "type": "string"
+ },
+ "expectExceptionConstantinople": {
+ "type": "string"
+ },
+ "expectExceptionEIP150": {
+ "type": "string"
+ },
+ "expectExceptionEIP158": {
+ "type": "string"
+ },
+ "expectExceptionFrontier": {
+ "type": "string"
+ },
+ "expectExceptionHomestead": {
+ "type": "string"
+ },
+ "rlp": {
+ "$ref": "#/definitions/BadHexData"
+ },
+ "transactions": {
+ "items": {
+ "$ref": "#/definitions/Transaction"
+ },
+ "type": "array"
+ },
+ "uncleHeaders": {
+ "type": "array"
+ }
+ },
+ "type": "object"
},
- "storage": {
- "type": "object",
- "additionalProperties": false,
- "patternProperties": {
- "^0x[0-9a-f]+": {
- "description": "storage key with 0x. data is HexData",
- "$ref": "#/definitions/HexData"
+ "BlockHeader": {
+ "properties": {
+ "bloom": {
+ "$ref": "#/definitions/HexData"
+ },
+ "coinbase": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "difficulty": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "extraData": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "gasLimit": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "gasUsed": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "hash": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "mixHash": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "nonce": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "number": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "parentHash": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "receiptTrie": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "stateRoot": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "timestamp": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "transactionsTrie": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "uncleHash": {
+ "$ref": "#/definitions/ConfusedHexType"
+ }
}
- }
- }
- },
- "required": [
- "balance",
- "code",
- "nonce"
- ]
- },
- "TxSigR": {
- "oneOf": [
- {
- "enum": [
- "0x00"
- ]
- }
- ]
- },
- "TxSigS": {
- "oneOf": [
- {
- "enum": [
- "0x00"
- ]
- }
- ]
- },
- "TxSigV": {
- "description": "a value of 0 is an invalid chainId, but used in a test case",
- "oneOf": [
- {
- "enum": [
- "0x00",
- "0x01"
- ]
- }
- ]
- },
- "HexLen40": {
- "pattern": "^0x[0-9a-fA-F]{40}$",
- "type": "string"
- },
- "HexNoPrefixLen40": {
- "pattern": "^[0-9a-fA-F]{40}$",
- "type": "string"
- },
- "AddressMaybePrefixOrEmpty": {
- "oneOf": [
- {
- "$ref": "#/definitions/HexLen40"
- },
- {
- "$ref": "#/definitions/HexNoPrefixLen40"
- },
- {
- "$ref": "#/definitions/EmptyString"
- }
- ]
- },
- "Transaction": {
- "type": "object",
- "additionalProperties": true,
- "not": {
- "required": [
- "r, s, v"
- ]
- },
- "properties": {
- "data": {
- "$ref": "#/definitions/HexDataOrEmpty"
- },
- "gasLimit": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "gasPrice": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "nonce": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "secretKey": {
- "$ref": "#/definitions/HexMaybePrefix"
- },
- "to": {
- "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
},
- "value": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- }
- },
- "required": [
- "data",
- "gasLimit",
- "gasPrice",
- "nonce",
- "to",
- "value"
- ]
- },
- "NullSenderTransaction": {
- "type": "object",
- "additionalProperties": true,
- "not": {
- "required": [
- "secretKey"
- ]
- },
- "properties": {
- "data": {
- "items": {
- "$ref": "#/definitions/HexMaybePrefixOrEmpty"
- },
- "type": "array"
- },
- "gasLimit": {
- "items": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "type": "array"
- },
- "gasPrice": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "nonce": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "r": {
- "$ref": "#/definitions/TxSigR"
- },
- "s": {
- "$ref": "#/definitions/TxSigS"
+ "NullSenderTransaction": {
+ "additionalProperties": true,
+ "not": {
+ "required": [
+ "secretKey"
+ ]
+ },
+ "properties": {
+ "data": {
+ "items": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "type": "array"
+ },
+ "gasLimit": {
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "type": "array"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "r": {
+ "$ref": "#/definitions/TxSigR"
+ },
+ "s": {
+ "$ref": "#/definitions/TxSigS"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "v": {
+ "$ref": "#/definitions/TxSigV"
+ },
+ "value": {
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "data",
+ "gasLimit",
+ "gasPrice",
+ "nonce",
+ "r",
+ "s",
+ "v",
+ "to",
+ "value"
+ ],
+ "type": "object"
},
- "to": {
- "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "nonce": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "balance",
+ "code",
+ "nonce"
+ ],
+ "type": "object"
},
- "v": {
- "$ref": "#/definitions/TxSigV"
+ "Transaction": {
+ "additionalProperties": true,
+ "not": {
+ "required": [
+ "r, s, v"
+ ]
+ },
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "gasLimit": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "secretKey": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "value": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ }
+ },
+ "required": [
+ "data",
+ "gasLimit",
+ "gasPrice",
+ "nonce",
+ "to",
+ "value"
+ ],
+ "type": "object"
},
- "value": {
- "items": {
- "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
- },
- "type": "array"
+ "TxSigR": {
+ "oneOf": [
+ {
+ "enum": [
+ "0x00"
+ ]
+ }
+ ]
+ },
+ "TxSigS": {
+ "oneOf": [
+ {
+ "enum": [
+ "0x00"
+ ]
+ }
+ ]
+ },
+ "TxSigV": {
+ "description": "a value of 0 is an invalid chainId, but used in a test case",
+ "oneOf": [
+ {
+ "enum": [
+ "0x00",
+ "0x01"
+ ]
+ }
+ ]
}
- },
- "required": [
- "data",
- "gasLimit",
- "gasPrice",
- "nonce",
- "r",
- "s",
- "v",
- "to",
- "value"
- ]
},
- "TransactionResults": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "hash": {
- "$ref": "#/definitions/HexData"
- },
- "logs": {},
- "indexes": {
- "additionalProperties": false,
+ "patternProperties": {
+ "^.*$": {
"properties": {
- "data": {
- "type": "integer"
- },
- "gas": {
- "type": "integer"
- },
- "value": {
- "type": "integer"
- }
+ "_info": {
+ "$ref": "#/definitions/Info"
+ },
+ "blocks": {
+ "items": {
+ "$ref": "#/definitions/Block"
+ },
+ "type": "array"
+ },
+ "genesisBlockHeader": {
+ "$ref": "#/definitions/BlockHeader"
+ },
+ "genesisRLP": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "postState": {
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "poststate account address with 0x prefix"
+ }
+ }
+ },
+ "pre": {
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "prestate account address with 0x prefix"
+ }
+ }
+ }
},
"required": [
- "data",
- "gas",
- "value"
+ "postState",
+ "pre",
+ "network",
+ "lastblockhash",
+ "blocks",
+ "genesisBlockHeader"
],
"type": "object"
- }
- },
- "required": [
- "hash",
- "indexes"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "patternProperties": {
- "^.*$": {
- "type": "object",
- "properties": {
- "genesisBlockHeader": {
- "$ref": "#/definitions/BlockHeader"
- },
- "genesisRLP": {
- "$ref": "#/definitions/ConfusedHexType"
- },
- "blocks": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Block"
- }
}
- },
- "postState": {
- "$ref": "#/definitions/TransactionResults"
- },
- "pre": {
- "$ref": "#/definitions/TransactionResults"
- }
- },
- "required": [
- "postState",
- "pre",
- "network",
- "lastblockhash",
- "blocks",
- "genesisRLP",
- "genesisBlockHeader"
- ]
- }
+ }
}
diff --git a/JSONSchema/definitions.json b/JSONSchema/definitions.json
new file mode 100644
index 000000000..45088f2bb
--- /dev/null
+++ b/JSONSchema/definitions.json
@@ -0,0 +1,320 @@
+{
+ "definitions": {
+ "AddressMaybePrefixOrEmpty": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/HexLen40"
+ },
+ {
+ "$ref": "#/definitions/HexNoPrefixLen40"
+ },
+ {
+ "$ref": "#/definitions/EmptyString"
+ }
+ ]
+ },
+ "ConfusedHexType": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/HexData"
+ },
+ {
+ "$ref": "#/definitions/HexQuantity"
+ }
+ ]
+ },
+ "EmptyString": {
+ "pattern": "^$",
+ "type": "string"
+ },
+ "ExpectCondition": {
+ "additionalProperties": false,
+ "properties": {
+ "//comment": {
+ "type": "string"
+ },
+ "indexes": {
+ "additionalProperties": false,
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/Indices"
+ },
+ "gas": {
+ "$ref": "#/definitions/Indices"
+ },
+ "value": {
+ "$ref": "#/definitions/Indices"
+ }
+ },
+ "result": {
+ "$ref": "#/definitions/PostStateAccounts"
+ }
+ },
+ "network": {
+ "$ref": "#/definitions/Networks"
+ },
+ "result": {
+ "$ref": "#/definitions/AccountMap"
+ }
+ },
+ "type": "object"
+ },
+ "HexData": {
+ "description": "Hex data. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
+ "pattern": "^0x([0-9a-fA-F][0-9a-fA-F])*$",
+ "type": "string"
+ },
+ "HexDataOrEmpty": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/HexData"
+ },
+ {
+ "$ref": "#/definitions/EmptyString"
+ }
+ ]
+ },
+ "HexLen40": {
+ "pattern": "^0x[0-9a-fA-F]{40}$",
+ "type": "string"
+ },
+ "HexMaybePrefix": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/HexNoPrefix"
+ },
+ {
+ "$ref": "#/definitions/HexData"
+ }
+ ]
+ },
+ "HexMaybePrefixOrEmpty": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ {
+ "$ref": "#/definitions/EmptyString"
+ }
+ ]
+ },
+ "HexNoPrefix": {
+ "pattern": "^([0-9a-fA-F][0-9a-fA-F])+$",
+ "type": "string"
+ },
+ "HexNoPrefixLen40": {
+ "pattern": "^[0-9a-fA-F]{40}$",
+ "type": "string"
+ },
+ "HexQuantity": {
+ "description": "Hex quantity. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
+ "pattern": "(^0x0$)|(^0x[1-9a-fA-F][0-9a-fA-F]*$)",
+ "type": "string"
+ },
+ "Info": {
+ "description": "Information block for filled tests.",
+ "properties": {
+ "comment": {
+ "type": "string"
+ },
+ "filledwith": {
+ "type": "string"
+ },
+ "lllcversion": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "sourceHash": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "sourceHash"
+ ]
+ },
+ "Indices": {
+ "anyOf": [
+ {
+ "type": "array"
+ },
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ }
+ ]
+ },
+ "IntegerOrConfusedHex": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/IntegerString"
+ },
+ {
+ "$ref": "#/definitions/ConfusedHexType"
+ }
+ ]
+ },
+ "IntegerOrEmpty": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/IntegerString"
+ },
+ {
+ "$ref": "#/definitions/EmptyString"
+ }
+ ]
+ },
+ "IntegerOrEmptyOrConfusedHex": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/IntegerOrEmpty"
+ },
+ {
+ "$ref": "#/definitions/ConfusedHexType"
+ }
+ ]
+ },
+ "IntegerOrEmptyOrHexQuantity": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/IntegerOrEmpty"
+ },
+ {
+ "$ref": "#/definitions/HexQuantity"
+ }
+ ]
+ },
+ "IntegerOrHexQuantity": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/IntegerString"
+ },
+ {
+ "$ref": "#/definitions/HexQuantity"
+ }
+ ]
+ },
+ "IntegerOrNumber": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/IntegerString"
+ },
+ {
+ "type": "number"
+ }
+ ]
+ },
+ "IntegerOrNumberOrConfusedHex": {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/IntegerOrNumber"
+ },
+ {
+ "$ref": "#/definitions/ConfusedHexType"
+ }
+ ]
+ },
+ "IntegerString": {
+ "pattern": "^[0-9]+$",
+ "type": "string"
+ },
+ "LLLCode": {
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "Networks": {
+ "type": "array"
+ },
+ "NonExistentPostStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "shouldnotexist": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "shouldnotexist"
+ ],
+ "type": "object"
+ },
+ "PostStateAccounts": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-fA-F]{40}": {
+ "description": "filler prestate addresses with 0x prefix",
+ "oneOf": [
+ {
+ "$ref": "#/definitions/PreStateAccount"
+ },
+ {
+ "$ref": "#/definitions/NonExistentPostStateAccount"
+ }
+ ]
+ },
+ "^[0-9a-fA-F]{40}": {
+ "description": "filler prestate addresses without 0x prefix",
+ "oneOf": [
+ {
+ "$ref": "#/definitions/PreStateAccount"
+ },
+ {
+ "$ref": "#/definitions/NonExistentPostStateAccount"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "PrefixedHexOrInteger": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/IntegerString"
+ },
+ {
+ "$ref": "#/definitions/HexData"
+ }
+ ]
+ },
+ "TransactionResults": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "hash": {
+ "$ref": "#/definitions/HexData"
+ },
+ "indexes": {
+ "additionalProperties": false,
+ "properties": {
+ "data": {
+ "type": "integer"
+ },
+ "gas": {
+ "type": "integer"
+ },
+ "value": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "data",
+ "gas",
+ "value"
+ ],
+ "type": "object"
+ },
+ "logs": {}
+ },
+ "required": [
+ "hash",
+ "indexes"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ }
+}
diff --git a/JSONSchema/st-filler-schema.json b/JSONSchema/st-filler-schema.json
index d110e0493..9c810bee1 100644
--- a/JSONSchema/st-filler-schema.json
+++ b/JSONSchema/st-filler-schema.json
@@ -1,188 +1,55 @@
{
"definitions": {
- "EmptyString": {
- "type": "string",
- "pattern": "^$"
- },
- "HexData": {
- "description": "Hex data. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
- "pattern": "^0x([0-9a-fA-F][0-9a-fA-F])*$",
- "type": "string"
- },
- "HexQuantity": {
- "description": "Hex quantity. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
- "pattern": "(^0x0$)|(^0x[1-9a-fA-F][0-9a-fA-F]*$)",
- "type": "string"
- },
- "ConfusedHexType": {
- "anyOf": [
- { "$ref": "#/definitions/HexData" },
- { "$ref": "#/definitions/HexQuantity" }
- ]
- },
- "TxData": {
- "oneOf": [
- { "$ref": "#/definitions/HexData" },
- { "$ref": "#/definitions/EmptyString" },
- { "$ref": "#/definitions/LLLCode" }
- ]
- },
- "LLLCode" : {
- "type" : "string",
- "pattern" : "^{.*}$"
- },
- "HexNoPrefix" : {
- "pattern": "^([0-9a-fA-F][0-9a-fA-F])+$",
- "type": "string"
- },
- "HexMaybePrefix": {
- "oneOf": [
- { "$ref": "#/definitions/HexNoPrefix" },
- { "$ref": "#/definitions/HexData" }
- ]
- },
- "HexMaybePrefixOrEmpty": {
- "oneOf": [
- { "$ref": "#/definitions/HexMaybePrefix" },
- { "$ref": "#/definitions/EmptyString" }
- ]
- },
- "IntegerString": {
- "pattern": "^[0-9]+$",
- "type": "string"
- },
- "IntegerOrEmpty": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "$ref": "#/definitions/EmptyString" }
- ]
- },
- "IntegerOrNumber": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "type": "number" }
- ]
- },
- "IntegerOrNumberOrConfusedHex": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerOrNumber" },
- { "$ref": "#/definitions/ConfusedHexType" }
- ]
- },
- "IntegerOrEmptyOrHexQuantity": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerOrEmpty" },
- { "$ref": "#/definitions/HexQuantity" }
- ]
- },
- "IntegerOrHexQuantity": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "$ref": "#/definitions/HexQuantity" }
- ]
- },
- "IntegerOrConfusedHex": {
- "anyOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "$ref": "#/definitions/ConfusedHexType" }
- ]
- },
- "IntegerOrEmptyOrConfusedHex": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerOrEmpty" },
- { "$ref": "#/definitions/ConfusedHexType" }
- ]
- },
- "PrefixedHexOrInteger": {
- "anyOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "$ref": "#/definitions/HexData" }
- ]
- },
- "PreStateAccount": {
- "type": "object",
- "additionalproperties": true,
- "properties": {
- "balance": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "code": { "type": "string" },
- "nonce": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "storage": {
- "type": "object",
- "additionalProperties": false,
- "patternProperties": {
- "^0x[0-9a-f]+": {
- "description": "storage key with 0x prefix, just the prefix `0x` is null and thus not permitted, a hex quantity is permitted. for the storage value, only hex data is permitted in filled test. Both decimal and hex allowed for the fillers.",
- "$ref": "#/definitions/PrefixedHexOrInteger"
- }
- }
- }
- }
- },
- "NonExistentPostStateAccount": {
- "type": "object",
- "additionalproperties": true,
- "properties": {
- "shouldnotexist": {
- "type": "boolean"
+ "AccountMap": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-fA-F]{40}": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "filler prestate addresses with 0x prefix"
+ },
+ "^[0-9a-fA-F]{40}": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "filler prestate addresses without 0x prefix"
}
},
- "required": [
- "shouldnotexist"
- ]
-
- },
- "TxSigR": {
- "oneOf": [
- { "enum" : [ "0" ] }
- ]
- },
- "TxSigS": {
- "oneOf": [
- { "enum" : [ "0" ] }
- ]
- },
- "TxSigV": {
- "description": "a value of 0 is an invalid chainId, but used in a test case",
- "oneOf": [
- { "enum" : [ "0", "1" ] }
- ]
- },
- "HexLen40": {
- "pattern": "^0x[0-9a-fA-F]{40}$",
- "type": "string"
- },
- "HexNoPrefixLen40": {
- "pattern": "^[0-9a-fA-F]{40}$",
- "type": "string"
- },
- "AddressMaybePrefixOrEmpty" : {
- "oneOf": [
- { "$ref": "#/definitions/HexLen40" },
- { "$ref": "#/definitions/HexNoPrefixLen40" },
- { "$ref": "#/definitions/EmptyString" }
- ]
+ "type": "object"
},
- "Transaction": {
- "type": "object",
- "additionalProperties": true,
- "not": {
- "required": ["r, s, v"]
- },
+ "NullSenderTransaction": {
"properties": {
"data": {
- "items": { "$ref": "#/definitions/TxData" },
+ "items": {
+ "$ref": "#/definitions/TxData"
+ },
"type": "array"
},
"gasLimit": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
},
- "gasPrice": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "nonce": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "secretKey": { "$ref": "#/definitions/HexMaybePrefix" },
- "to": { "$ref": "#/definitions/AddressMaybePrefixOrEmpty"},
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "r": {
+ "$ref": "#/definitions/TxSigR"
+ },
+ "s": {
+ "$ref": "#/definitions/TxSigS"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "v": {
+ "$ref": "#/definitions/TxSigV"
+ },
"value": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
}
},
@@ -191,34 +58,78 @@
"gasLimit",
"gasPrice",
"nonce",
- "secretKey",
+ "r",
+ "s",
+ "v",
"to",
"value"
- ]
+ ],
+ "type": "object"
},
- "NullSenderTransaction": {
- "type": "object",
- "additionalProperties": true,
- "not": {
- "required": ["secretKey"]
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "code": {
+ "type": "string"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]+": {
+ "$ref": "#/definitions/PrefixedHexOrInteger",
+ "description": "storage key with 0x prefix, just the prefix `0x` is null and thus not permitted, a hex quantity is permitted. for the storage value, only hex data is permitted in filled test. Both decimal and hex allowed for the fillers."
+ }
+ },
+ "type": "object"
+ }
},
+ "type": "object"
+ },
+ "Transaction": {
"properties": {
"data": {
- "items": { "$ref": "#/definitions/TxData" },
+ "items": {
+ "$ref": "#/definitions/TxData"
+ },
"type": "array"
},
"gasLimit": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
},
- "gasPrice": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "nonce": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "r": { "$ref": "#/definitions/TxSigR" },
- "s": { "$ref": "#/definitions/TxSigS" },
- "to": { "$ref": "#/definitions/AddressMaybePrefixOrEmpty"},
- "v": { "$ref": "#/definitions/TxSigV" },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "r": {
+ "$ref": "#/definitions/TxSigR"
+ },
+ "s": {
+ "$ref": "#/definitions/TxSigS"
+ },
+ "secretKey": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "v": {
+ "$ref": "#/definitions/TxSigV"
+ },
"value": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
}
},
@@ -227,75 +138,52 @@
"gasLimit",
"gasPrice",
"nonce",
- "r",
- "s",
- "v",
+ "secretKey",
"to",
"value"
- ]
+ ],
+ "type": "object"
},
- "PostStateAccounts": {
- "additionalProperties": false,
- "patternProperties": {
- "^[0-9a-fA-F]{40}": {
- "description": "filler prestate addresses without 0x prefix",
- "oneOf": [
- {"$ref": "#/definitions/PreStateAccount"},
- {"$ref": "#/NonExistentPostStateAccount"}
- ]
+ "TxData": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/HexData"
},
- "^0x[0-9a-fA-F]{40}": {
- "description": "filler prestate addresses with 0x prefix",
- "oneOf": [
- {"$ref": "#/definitions/PreStateAccount"},
- {"$ref": "#/NonExistentPostStateAccount"}
- ]
+ {
+ "$ref": "#/definitions/EmptyString"
+ },
+ {
+ "$ref": "#/definitions/LLLCode"
}
- },
- "type": "object"
- },
- "ExpectCondition": {
- "type": "object",
- "properties": {
- "result": { "$ref": "#/definitions/AccountMap" },
- "network": { "$ref": "#/definitions/Networks" },
- "indexes": {
- "properties": {
- "data": { "$ref": "#/definitions/Indices" },
- "gas": { "$ref": "#/definitions/Indices" },
- "value": { "$ref": "#/definitions/Indices" }
- },
- "result": {
- "$ref": "#/definitions/PostStateAccounts"
- },
- "additionalProperties": false
- },
- "//comment": { "type": "string" }
- },
- "additionalProperties": false
+ ]
},
- "AccountMap": {
- "additionalProperties": false,
- "patternProperties": {
- "^[0-9a-fA-F]{40}": {
- "description": "filler prestate addresses without 0x prefix",
- "$ref": "#/definitions/PreStateAccount"
- },
- "^0x[0-9a-fA-F]{40}": {
- "description": "filler prestate addresses with 0x prefix",
- "$ref": "#/definitions/PreStateAccount"
- }
- },
- "type": "object"
+ "TxSigR": {
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ]
+ }
+ ]
},
- "Networks": {
- "type": "array"
+ "TxSigS": {
+ "oneOf": [
+ {
+ "enum": [
+ "0"
+ ]
+ }
+ ]
},
- "Indices": {
- "anyOf": [
- { "type": "array" },
- { "type": "string" },
- { "type": "number" }
+ "TxSigV": {
+ "description": "a value of 0 is an invalid chainId, but used in a test case",
+ "oneOf": [
+ {
+ "enum": [
+ "0",
+ "1"
+ ]
+ }
]
}
},
@@ -305,12 +193,24 @@
"env": {
"additionalproperties": false,
"properties": {
- "currentCoinbase": { "$ref": "#/definitions/HexMaybePrefix" },
- "currentDifficulty": { "$ref": "#/definitions/IntegerOrConfusedHex" },
- "currentGasLimit": { "$ref": "#/definitions/IntegerOrConfusedHex" },
- "currentNumber": { "$ref": "#/definitions/IntegerOrConfusedHex" },
- "currentTimestamp": { "$ref": "#/definitions/IntegerOrNumberOrConfusedHex" },
- "previousHash": { "$ref": "#/definitions/HexMaybePrefix" }
+ "currentCoinbase": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ "currentDifficulty": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentGasLimit": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentNumber": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentTimestamp": {
+ "$ref": "#/definitions/IntegerOrNumberOrConfusedHex"
+ },
+ "previousHash": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ }
},
"required": [
"currentCoinbase",
@@ -323,27 +223,33 @@
"type": "object"
},
"expect": {
- "type": "array",
- "items": { "$ref": "#/definitions/ExpectCondition" }
+ "items": {
+ "$ref": "#/definitions/ExpectCondition"
+ },
+ "type": "array"
},
"pre": {
"additionalProperties": false,
"patternProperties": {
- "^[0-9a-fA-F]{40}": {
- "description": "filler prestate addresses without 0x prefix",
- "$ref": "#/definitions/PreStateAccount"
- },
"^0x[0-9a-fA-F]{40}": {
- "description": "filler prestate addresses with 0x prefix",
- "$ref": "#/definitions/PreStateAccount"
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "filler prestate addresses with 0x prefix"
+ },
+ "^[0-9a-fA-F]{40}": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "filler prestate addresses without 0x prefix"
}
},
"type": "object"
},
"transaction": {
"oneOf": [
- { "$ref": "#/definitions/Transaction" },
- { "$ref": "#/definitions/NullSenderTransaction" }
+ {
+ "$ref": "#/definitions/Transaction"
+ },
+ {
+ "$ref": "#/definitions/NullSenderTransaction"
+ }
]
}
},
@@ -351,4 +257,4 @@
}
},
"type": "object"
-}
+} \ No newline at end of file
diff --git a/JSONSchema/st-schema.json b/JSONSchema/st-schema.json
index 7b1536dae..fa4ad181a 100644
--- a/JSONSchema/st-schema.json
+++ b/JSONSchema/st-schema.json
@@ -1,169 +1,47 @@
{
"definitions": {
- "EmptyString": {
- "type": "string",
- "pattern": "^$"
- },
- "HexData": {
- "description": "Hex data. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
- "pattern": "^0x([0-9a-fA-F][0-9a-fA-F])*$",
- "type": "string"
- },
- "HexQuantity": {
- "description": "Hex quantity. see https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding",
- "pattern": "(^0x0$)|(^0x[1-9a-fA-F][0-9a-fA-F]*$)",
- "type": "string"
- },
- "ConfusedHexType": {
- "anyOf": [
- { "$ref": "#/definitions/HexData" },
- { "$ref": "#/definitions/HexQuantity" }
- ]
- },
- "HexDataOrEmpty": {
- "oneOf": [
- { "$ref": "#/definitions/HexData" },
- { "$ref": "#/definitions/EmptyString" }
- ]
- },
- "HexNoPrefix" : {
- "pattern": "^([0-9a-fA-F][0-9a-fA-F])+$",
- "type": "string"
- },
- "HexMaybePrefix": {
- "oneOf": [
- { "$ref": "#/definitions/HexNoPrefix" },
- { "$ref": "#/definitions/HexData" }
- ]
- },
- "HexMaybePrefixOrEmpty": {
- "oneOf": [
- { "$ref": "#/definitions/HexMaybePrefix" },
- { "$ref": "#/definitions/EmptyString" }
- ]
- },
- "IntegerString": {
- "pattern": "^[0-9]+$",
- "type": "string"
- },
- "IntegerOrEmpty": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "$ref": "#/definitions/EmptyString" }
- ]
- },
- "IntegerOrNumber": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "type": "number" }
- ]
- },
- "IntegerOrNumberOrConfusedHex": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerOrNumber" },
- { "$ref": "#/definitions/ConfusedHexType" }
- ]
- },
- "IntegerOrEmptyOrHexQuantity": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerOrEmpty" },
- { "$ref": "#/definitions/HexQuantity" }
- ]
- },
- "IntegerOrHexQuantity": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "$ref": "#/definitions/HexQuantity" }
- ]
- },
- "IntegerOrConfusedHex": {
- "anyOf": [
- { "$ref": "#/definitions/IntegerString" },
- { "$ref": "#/definitions/ConfusedHexType" }
- ]
- },
- "IntegerOrEmptyOrConfusedHex": {
- "oneOf": [
- { "$ref": "#/definitions/IntegerOrEmpty" },
- { "$ref": "#/definitions/ConfusedHexType" }
- ]
- },
- "PreStateAccount": {
- "type": "object",
- "additionalproperties": true,
- "properties": {
- "balance": { "$ref": "#/definitions/ConfusedHexType" },
- "code": { "$ref": "#/definitions/HexMaybePrefixOrEmpty" },
- "nonce": { "$ref": "#/definitions/ConfusedHexType" },
- "storage": {
- "type": "object",
- "additionalProperties": false,
- "patternProperties": {
- "^0x[0-9a-f]+": {
- "description": "storage key with 0x. data is HexData",
- "$ref": "#/definitions/HexData"
- }
- }
- }
- },
- "required": [
- "balance",
- "code",
- "nonce"
- ]
- },
- "TxSigR": {
- "oneOf": [
- { "enum" : [ "0x00" ] }
- ]
- },
- "TxSigS": {
- "oneOf": [
- { "enum" : [ "0x00" ] }
- ]
- },
- "TxSigV": {
- "description": "a value of 0 is an invalid chainId, but used in a test case",
- "oneOf": [
- { "enum" : [ "0x00", "0x01" ] }
- ]
- },
- "HexLen40": {
- "pattern": "^0x[0-9a-fA-F]{40}$",
- "type": "string"
- },
- "HexNoPrefixLen40": {
- "pattern": "^[0-9a-fA-F]{40}$",
- "type": "string"
- },
- "AddressMaybePrefixOrEmpty" : {
- "oneOf": [
- { "$ref": "#/definitions/HexLen40" },
- { "$ref": "#/definitions/HexNoPrefixLen40" },
- { "$ref": "#/definitions/EmptyString" }
- ]
- },
- "Transaction": {
- "type": "object",
+ "NullSenderTransaction": {
"additionalProperties": true,
"not": {
- "required": ["r, s, v"]
+ "required": [
+ "secretKey"
+ ]
},
"properties": {
"data": {
- "items": { "$ref": "#/definitions/HexDataOrEmpty" },
+ "items": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
"type": "array"
},
"gasLimit": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
},
- "gasPrice": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "nonce": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "secretKey": { "$ref": "#/definitions/HexMaybePrefix" },
- "to": { "$ref": "#/definitions/AddressMaybePrefixOrEmpty"},
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "r": {
+ "$ref": "#/definitions/TxSigR"
+ },
+ "s": {
+ "$ref": "#/definitions/TxSigS"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "v": {
+ "$ref": "#/definitions/TxSigV"
+ },
"value": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
}
},
@@ -172,34 +50,80 @@
"gasLimit",
"gasPrice",
"nonce",
- "secretKey",
+ "r",
+ "s",
+ "v",
"to",
"value"
- ]
+ ],
+ "type": "object"
},
- "NullSenderTransaction": {
- "type": "object",
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "nonce": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]+": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "balance",
+ "code",
+ "nonce"
+ ],
+ "type": "object"
+ },
+ "Transaction": {
"additionalProperties": true,
"not": {
- "required": ["secretKey"]
+ "required": [
+ "r, s, v"
+ ]
},
"properties": {
"data": {
- "items": { "$ref": "#/definitions/HexMaybePrefixOrEmpty" },
+ "items": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
"type": "array"
},
"gasLimit": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
},
- "gasPrice": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "nonce": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
- "r": { "$ref": "#/definitions/TxSigR" },
- "s": { "$ref": "#/definitions/TxSigS" },
- "to": { "$ref": "#/definitions/AddressMaybePrefixOrEmpty"},
- "v": { "$ref": "#/definitions/TxSigV" },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "secretKey": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ "to": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
"value": {
- "items": { "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" },
+ "items": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
"type": "array"
}
},
@@ -208,54 +132,48 @@
"gasLimit",
"gasPrice",
"nonce",
- "r",
- "s",
- "v",
+ "secretKey",
"to",
"value"
+ ],
+ "type": "object"
+ },
+ "TxSigR": {
+ "oneOf": [
+ {
+ "enum": [
+ "0x00"
+ ]
+ }
]
},
- "TransactionResults": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "hash": {
- "$ref": "#/definitions/HexData"
- },
- "logs": {},
- "indexes": {
- "additionalProperties": false,
- "properties": {
- "data": {
- "type": "integer"
- },
- "gas": {
- "type": "integer"
- },
- "value": {
- "type": "integer"
- }
- },
- "required": [
- "data",
- "gas",
- "value"
- ],
- "type": "object"
- }
- },
- "required": [
- "hash",
- "indexes"
- ],
- "type": "object"
- },
- "type": "array"
+ "TxSigS": {
+ "oneOf": [
+ {
+ "enum": [
+ "0x00"
+ ]
+ }
+ ]
+ },
+ "TxSigV": {
+ "description": "a value of 0 is an invalid chainId, but used in a test case",
+ "oneOf": [
+ {
+ "enum": [
+ "0x00",
+ "0x01"
+ ]
+ }
+ ]
}
},
"patternProperties": {
"^.*$": {
"properties": {
+ "_info": {
+ "$ref": "#/definitions/Info"
+ },
"env": {
"additionalproperties": false,
"properties": {
@@ -294,22 +212,22 @@
"post": {
"additionalProperties": false,
"properties": {
- "EIP150": {
+ "Byzantium": {
"$ref": "#/definitions/TransactionResults"
},
- "EIP158": {
+ "Constantinople": {
"$ref": "#/definitions/TransactionResults"
},
- "Frontier": {
+ "EIP150": {
"$ref": "#/definitions/TransactionResults"
},
- "Homestead": {
+ "EIP158": {
"$ref": "#/definitions/TransactionResults"
},
- "Byzantium": {
+ "Frontier": {
"$ref": "#/definitions/TransactionResults"
},
- "Constantinople": {
+ "Homestead": {
"$ref": "#/definitions/TransactionResults"
}
},
@@ -319,16 +237,20 @@
"additionalProperties": false,
"patternProperties": {
"^0x[0-9a-f]*": {
- "description": "prestate account address with 0x prefix",
- "$ref": "#/definitions/PreStateAccount"
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "prestate account address with 0x prefix"
}
},
"type": "object"
},
"transaction": {
"oneOf": [
- { "$ref": "#/definitions/Transaction" },
- { "$ref": "#/definitions/NullSenderTransaction" }
+ {
+ "$ref": "#/definitions/Transaction"
+ },
+ {
+ "$ref": "#/definitions/NullSenderTransaction"
+ }
]
}
},
diff --git a/JSONSchema/validate.js b/JSONSchema/validate.js
deleted file mode 100755
index e4c41140e..000000000
--- a/JSONSchema/validate.js
+++ /dev/null
@@ -1,82 +0,0 @@
-#! /bin/env node
-
-var fs = require('fs');
-var validate = require('jsonschema').validate;
-var readline = require('readline');
-var process = require('process');
-var dup = require('json-dup-key-validator');
-
-var schemaFile = process.argv[2];
-
-var schema = '';
-var testCode = '';
-var success = true;
-var numFiles = 0;
-var numFailed = 0;
-var numSucceeded = 0;
-var fileNames = [];
-
-var rl = readline.createInterface({
- input: process.stdin,
- output: process.stdout,
- terminal: false
-});
-
-rl.on('line', function(fileName) {
- if (fileName == 'BlockchainTests/bcForgedTest/bcInvalidRLPTest.json') {
- return
- }
- fileNames.push(fileName);
-});
-
-rl.on('close', function() {
- var jsonString = fs.readFileSync(schemaFile, "utf8");
- schema = dup.parse(jsonString);
-
- //sort file names alphabetically so that log output ordering is consistent
- fileNames.sort(function(a,b) {
- if(a<b) {
- return -1;
- } else {
- return 1;
- }
-
- return 0;
- });
-
- for (var i = 0; i < fileNames.length; i++) {
- try {
- var jsonString = fs.readFileSync(fileNames[i], "utf8");
- testCode = dup.parse(jsonString);
- } catch(e) {
- console.log('error on file:', fileNames[i])
- console.log(e);
- numFailed++;
- continue;
- }
-
- try {
- var x = validate(testCode, schema);
-
- if (x.errors.length > 0) {
- numFailed++;
- console.log(fileNames[i]+ ':\n');
- for (var j = 0; j < x.errors.length; j++) {
- console.log(' ' + x.errors[j] + '\n')
- }
- } else {
- numSucceeded++;
- }
- } catch (e) {
- console.log(e);
- numFailed++;
- }
- }
-
- console.log("Valid: "+numSucceeded+"\n");
- console.log("Failed: "+numFailed+"\n");
-
- if(numFailed > 0) {
- process.exit(-1);
- }
-});
diff --git a/JSONSchema/vm-filler-schema.json b/JSONSchema/vm-filler-schema.json
new file mode 100644
index 000000000..fe61ae86a
--- /dev/null
+++ b/JSONSchema/vm-filler-schema.json
@@ -0,0 +1,162 @@
+{
+ "definitions": {
+ "ExpectStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^(0x)?[0-9a-f]+": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "code": {
+ "$ref": "#/definitions/LLLCode"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^(0x)?[0-9a-f]+": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "balance",
+ "code",
+ "nonce"
+ ],
+ "type": "object"
+ }
+ },
+ "patternProperties": {
+ "^.*$": {
+ "properties": {
+ "env": {
+ "additionalproperties": false,
+ "properties": {
+ "currentCoinbase": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ "currentDifficulty": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentGasLimit": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentNumber": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentTimestamp": {
+ "$ref": "#/definitions/IntegerOrNumberOrConfusedHex"
+ }
+ },
+ "required": [
+ "currentCoinbase",
+ "currentDifficulty",
+ "currentGasLimit",
+ "currentNumber",
+ "currentTimestamp"
+ ],
+ "type": "object"
+ },
+ "exec": {
+ "additionalproperties": false,
+ "properties": {
+ "address": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "caller": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "code": {
+ "$ref": "#/definitions/LLLCode"
+ },
+ "data": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "origin": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "value": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ }
+ },
+ "required": [
+ "address",
+ "caller",
+ "data",
+ "gas",
+ "gasPrice",
+ "origin",
+ "value"
+ ]
+ },
+ "expect": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[0-9a-f]*": {
+ "$ref": "#/definitions/ExpectStateAccount",
+ "description": "expectstate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "logs": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "out": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "pre": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^(0x)?[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "prestate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
diff --git a/JSONSchema/vm-schema.json b/JSONSchema/vm-schema.json
new file mode 100644
index 000000000..f88b92a2e
--- /dev/null
+++ b/JSONSchema/vm-schema.json
@@ -0,0 +1,141 @@
+{
+ "definitions": {
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "nonce": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]+": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "balance",
+ "code",
+ "nonce"
+ ],
+ "type": "object"
+ }
+ },
+ "patternProperties": {
+ "^.*$": {
+ "properties": {
+ "_info": {
+ "$ref": "#/definitions/Info"
+ },
+ "env": {
+ "additionalproperties": false,
+ "properties": {
+ "currentCoinbase": {
+ "$ref": "#/definitions/HexData"
+ },
+ "currentDifficulty": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "currentGasLimit": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "currentNumber": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "currentTimestamp": {
+ "$ref": "#/definitions/ConfusedHexType"
+ }
+ },
+ "required": [
+ "currentCoinbase",
+ "currentDifficulty",
+ "currentGasLimit",
+ "currentNumber",
+ "currentTimestamp"
+ ],
+ "type": "object"
+ },
+ "exec": {
+ "additionalproperties": false,
+ "properties": {
+ "address": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "caller": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "data": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "origin": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "value": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ }
+ },
+ "required": [
+ "address",
+ "caller",
+ "code",
+ "data",
+ "gas",
+ "gasPrice",
+ "origin",
+ "value"
+ ]
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "logs": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "out": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "post": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "poststate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ },
+ "pre": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "prestate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}