aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml25
-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
-rw-r--r--VMTests/vmArithmeticTest/sdiv_dejavu.json25
-rw-r--r--src/BlockchainTestsFiller/bcStateTests/transactionFromNotExistingAccountFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp2Filler.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp3Filler.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDrop2Filler.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDropFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/gasLimitLTGasUsageUncleFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/pastUncleTimestampFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0Filler.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0_2Filler.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleHeaderValidity/wrongStateRootFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2ByzantiumFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2Filler.json2
-rw-r--r--src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txs2Filler.json2
-rw-r--r--src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeAndConfirmAgainFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeFiller.json2
-rw-r--r--src/BlockchainTestsFiller/bcWalletTest/walletReorganizeOwnersFiller.json2
-rw-r--r--src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json2
-rwxr-xr-xtest.py192
29 files changed, 1806 insertions, 1076 deletions
diff --git a/.travis.yml b/.travis.yml
index a8cc9bd7a..cd8731f94 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,25 +1,20 @@
language: python
python:
- - "2.7"
-node_js:
- - "8"
+ - "3.6"
branches:
only:
- master
- develop
sudo: false
-install: "npm install jsonschema json-dup-key-validator"
+install: "pip install jsonschema pysha3"
script:
-# won't fail, but print problems
-- find . -name 'node_modules' -prune -o \( -name "*.json" -not -name "*Filler.json" -exec echo {} \; -exec python -mjson.tool {} /dev/null \; 2>&1 \) | grep -v -B 1 "^\./" | cat
-# will fail, if linting fails
-- find . -name 'node_modules' -prune -o \( -name "*.json" -not -name "*Filler.json" -print0 \) | xargs -I file -n1 -0 python -mjson.tool file /dev/null
-# run schema tests against GeneralStateTests
-- echo "Linting state tests"
-- echo -e "$(find GeneralStateTests -name '*.json')" | node JSONSchema/validate.js JSONSchema/st-schema.json
-- echo -e "$(find src/GeneralStateTestsFiller -name '*.json')" | node JSONSchema/validate.js JSONSchema/st-filler-schema.json
+# check valid JSON/well formatted
+- python3 test.py format ;
+ git diff --quiet &>/dev/null ;
-# run schema tests against BlockchainTests
-- echo "Linting blockchain tests"
-- echo -e "$(find BlockchainTests -name '*.json')" | node JSONSchema/validate.js JSONSchema/bc-schema.json
+# check test schemas
+ python3 test.py validate ./src/VMTestsFiller ./src/GeneralStateTestsFiller ./src/BlockchainTestsFiller ./VMTests ./GeneralStateTests ./BlockchainTests ;
+
+# check test filled
+ python3 test.py checkFilled ./BlockhcainTests ./GeneralStateTests ./TransactionTests ./VMTests
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"
+}
diff --git a/VMTests/vmArithmeticTest/sdiv_dejavu.json b/VMTests/vmArithmeticTest/sdiv_dejavu.json
index 19bcefb32..993720984 100644
--- a/VMTests/vmArithmeticTest/sdiv_dejavu.json
+++ b/VMTests/vmArithmeticTest/sdiv_dejavu.json
@@ -2,11 +2,13 @@
"sdiv_dejavu" : {
"_info" : {
"comment" : "",
- "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++",
- "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++",
+ "filledwith" : "testeth 1.4.0.dev0-56+commit.71414ae3",
+ "lllcversion" : "Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++",
"source" : "src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json",
- "sourceHash" : "6db2726eb4c77fdbdac68e80a65f336195c2f5ec859e69a43a55d3d8c21daf5b"
+ "sourceHash" : "9aa0a025d0f407c03982ce3cc06415063bc5a2b5672e0416880bf73057ad031c"
},
+ "callcreates" : [
+ ],
"env" : {
"currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
"currentDifficulty" : "0x0100",
@@ -17,17 +19,30 @@
"exec" : {
"address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
"caller" : "0xcd1722f2947def4cf144679da39c4c32bdc35681",
- "code" : "0x60600560600960600003058060600055",
+ "code" : "0x600560096000030580600055",
"data" : "0x",
"gas" : "0x989680",
"gasPrice" : "0x01",
"origin" : "0xcd1722f2947def4cf144679da39c4c32bdc35681",
"value" : "0x0de0b6b3a7640000"
},
+ "gas" : "0x984849",
+ "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "out" : "0x",
+ "post" : {
+ "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
+ "balance" : "0x0de0b6b3a7640000",
+ "code" : "0x600560096000030580600055",
+ "nonce" : "0x00",
+ "storage" : {
+ "0x00" : "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+ }
+ }
+ },
"pre" : {
"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "0x0de0b6b3a7640000",
- "code" : "0x60600560600960600003058060600055",
+ "code" : "0x600560096000030580600055",
"nonce" : "0x00",
"storage" : {
}
diff --git a/src/BlockchainTestsFiller/bcStateTests/transactionFromNotExistingAccountFiller.json b/src/BlockchainTestsFiller/bcStateTests/transactionFromNotExistingAccountFiller.json
index d41b0e672..62c84bb48 100644
--- a/src/BlockchainTestsFiller/bcStateTests/transactionFromNotExistingAccountFiller.json
+++ b/src/BlockchainTestsFiller/bcStateTests/transactionFromNotExistingAccountFiller.json
@@ -75,5 +75,5 @@
]
}
]
- },
+ }
}
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp2Filler.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp2Filler.json
index b64e162c5..eb7a17afd 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp2Filler.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp2Filler.json
@@ -84,7 +84,7 @@
"expectExceptionByzantium" : "InvalidStateRoot",
"expectExceptionConstantinople" : "InvalidStateRoot",
"blockHeader" : {
- "stateRoot" : "77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
+ "stateRoot" : "0x77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp3Filler.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp3Filler.json
index b6e153f54..0246c31e3 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp3Filler.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestamp3Filler.json
@@ -77,7 +77,7 @@
"expectExceptionByzantium" : "InvalidStateRoot",
"expectExceptionConstantinople" : "InvalidStateRoot",
"blockHeader" : {
- "stateRoot" : "3e9110dccee270e36e254d8e3b67cb18c12a9a0aa24065e24372a85856195c70",
+ "stateRoot" : "0x3e9110dccee270e36e254d8e3b67cb18c12a9a0aa24065e24372a85856195c70",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDrop2Filler.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDrop2Filler.json
index 8136b378d..b19d1c726 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDrop2Filler.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDrop2Filler.json
@@ -78,7 +78,7 @@
"expectExceptionEIP158" : "InvalidStateRoot",
"blocknumber" : "3",
"blockHeader" : {
- "stateRoot" : "aa4b1943360f5a0ea3b1a2a1d661de5b6d773eb371bd84b319837d96ffc7b630",
+ "stateRoot" : "0xaa4b1943360f5a0ea3b1a2a1d661de5b6d773eb371bd84b319837d96ffc7b630",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDropFiller.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDropFiller.json
index c8fd70c8d..12cdf16c6 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDropFiller.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/futureUncleTimestampDifficultyDropFiller.json
@@ -87,7 +87,7 @@
"expectExceptionConstantinople" : "InvalidStateRoot",
"blocknumber" : "3",
"blockHeader" : {
- "stateRoot" : "77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
+ "stateRoot" : "0x77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/gasLimitLTGasUsageUncleFiller.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/gasLimitLTGasUsageUncleFiller.json
index a9f3cb0a1..48b59ef9f 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/gasLimitLTGasUsageUncleFiller.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/gasLimitLTGasUsageUncleFiller.json
@@ -75,7 +75,7 @@
"expectExceptionALL" : "TooMuchGasUsed",
"blocknumber" : "3",
"blockHeader" : {
- "stateRoot" : "77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
+ "stateRoot" : "0x77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/pastUncleTimestampFiller.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/pastUncleTimestampFiller.json
index 23cda48a6..ac714f4b4 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/pastUncleTimestampFiller.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/pastUncleTimestampFiller.json
@@ -75,7 +75,7 @@
"expectExceptionALL" : "InvalidTimestamp",
"blocknumber" : "3",
"blockHeader" : {
- "stateRoot" : "77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
+ "stateRoot" : "0x77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0Filler.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0Filler.json
index 824b23ecd..16ade2f02 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0Filler.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0Filler.json
@@ -87,7 +87,7 @@
"expectExceptionConstantinople" : "InvalidStateRoot",
"blocknumber" : "3",
"blockHeader" : {
- "stateRoot" : "77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
+ "stateRoot" : "0x77f96f4c766c10cd0207e2672b1b747c741ed75bc94e7be7abacb71cdca3c8fb",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0_2Filler.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0_2Filler.json
index 208de19cc..dba246b0e 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0_2Filler.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/uncleBloomNot0_2Filler.json
@@ -78,7 +78,7 @@
"expectExceptionEIP158" : "InvalidStateRoot",
"blocknumber" : "3",
"blockHeader" : {
- "stateRoot" : "aa4b1943360f5a0ea3b1a2a1d661de5b6d773eb371bd84b319837d96ffc7b630",
+ "stateRoot" : "0xaa4b1943360f5a0ea3b1a2a1d661de5b6d773eb371bd84b319837d96ffc7b630",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleHeaderValidity/wrongStateRootFiller.json b/src/BlockchainTestsFiller/bcUncleHeaderValidity/wrongStateRootFiller.json
index 4a337927c..ef371d58c 100644
--- a/src/BlockchainTestsFiller/bcUncleHeaderValidity/wrongStateRootFiller.json
+++ b/src/BlockchainTestsFiller/bcUncleHeaderValidity/wrongStateRootFiller.json
@@ -87,7 +87,7 @@
],
"uncleHeaders" : [
{
- "stateRoot" : "bad40b30d613c35dad43e3693329e1b1ee6350f989cf46a288025a1cbfdab9cd",
+ "stateRoot" : "0xbad40b30d613c35dad43e3693329e1b1ee6350f989cf46a288025a1cbfdab9cd",
"populateFromBlock" : "1",
"overwriteAndRedoPoW" : "stateRoot"
}
diff --git a/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2ByzantiumFiller.json b/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2ByzantiumFiller.json
index bab8d8506..2a9136405 100644
--- a/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2ByzantiumFiller.json
+++ b/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2ByzantiumFiller.json
@@ -60,7 +60,7 @@
"expectExceptionEIP150" : "InvalidStateRoot",
"expectExceptionEIP158" : "InvalidStateRoot",
"blockHeader" : {
- "stateRoot" : "e1aff725a27c18dbb8d70c2d0e049511dabba2f595c20f7c67ad4026d6275f88",
+ "stateRoot" : "0xe1aff725a27c18dbb8d70c2d0e049511dabba2f595c20f7c67ad4026d6275f88",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2Filler.json b/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2Filler.json
index 7fe1ec8b9..3cfaa44a1 100644
--- a/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2Filler.json
+++ b/src/BlockchainTestsFiller/bcUncleTest/uncleHeaderAtBlock2Filler.json
@@ -69,7 +69,7 @@
"expectExceptionByzantium" : "InvalidStateRoot",
"expectExceptionConstantinople" : "InvalidStateRoot",
"blockHeader" : {
- "stateRoot" : "6ff22555fde6fe93e5b412a8691287a5be5708246adfd0c599604849925fcc34",
+ "stateRoot" : "0x6ff22555fde6fe93e5b412a8691287a5be5708246adfd0c599604849925fcc34",
"updatePoW" : "1"
},
"transactions" : [
diff --git a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txs2Filler.json b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txs2Filler.json
index 340034352..0c9f9d694 100644
--- a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txs2Filler.json
+++ b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txs2Filler.json
@@ -46,7 +46,7 @@
{
"transactions" : [
{
- "data" : "6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
+ "data" : "0x6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
"gasLimit" : "0x012343f0",
"gasPrice" : "1",
"nonce" : "0",
diff --git a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsFiller.json b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsFiller.json
index 42aba839b..9d30b313d 100644
--- a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsFiller.json
+++ b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsFiller.json
@@ -46,7 +46,7 @@
{
"transactions" : [
{
- "data" : "6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
+ "data" : "0x6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
"gasLimit" : "0x12343f",
"gasPrice" : "1",
"nonce" : "0",
diff --git a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeAndConfirmAgainFiller.json b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeAndConfirmAgainFiller.json
index 5760e1252..27ee67085 100644
--- a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeAndConfirmAgainFiller.json
+++ b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeAndConfirmAgainFiller.json
@@ -46,7 +46,7 @@
{
"transactions" : [
{
- "data" : "6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
+ "data" : "0x6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
"gasLimit" : "0x012343f0",
"gasPrice" : "1",
"nonce" : "0",
diff --git a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeFiller.json b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeFiller.json
index c6ffc8a12..198dc22a3 100644
--- a/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeFiller.json
+++ b/src/BlockchainTestsFiller/bcWalletTest/wallet2outOf3txsRevokeFiller.json
@@ -46,7 +46,7 @@
{
"transactions" : [
{
- "data" : "6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
+ "data" : "0x6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
"gasLimit" : "0x012343f0",
"gasPrice" : "1",
"nonce" : "0",
diff --git a/src/BlockchainTestsFiller/bcWalletTest/walletReorganizeOwnersFiller.json b/src/BlockchainTestsFiller/bcWalletTest/walletReorganizeOwnersFiller.json
index 100afaf34..28e8f6ce8 100644
--- a/src/BlockchainTestsFiller/bcWalletTest/walletReorganizeOwnersFiller.json
+++ b/src/BlockchainTestsFiller/bcWalletTest/walletReorganizeOwnersFiller.json
@@ -37,7 +37,7 @@
{
"transactions" : [
{
- "data" : "6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
+ "data" : "0x6060604052604051602080611014833960806040818152925160016000818155818055600160a060020a03331660038190558152610102909452938320939093556201518042046101075582917f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c91a250610f958061007f6000396000f300606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe",
"gasLimit" : "0x012343f0",
"gasPrice" : "1",
"nonce" : "0",
diff --git a/src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json b/src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json
index a075f98e8..72308fd1c 100644
--- a/src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json
+++ b/src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json
@@ -19,7 +19,7 @@
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
"balance" : "1000000000000000000",
"nonce" : "0",
- "code" : "( asm PUSH1 0x05 PUSH1 0x09 PUSH1 0x00 SUB SDIV DUP1 PUSH1 0 SSTORE )",
+ "code" : "( asm 0x05 0x09 0x00 SUB SDIV DUP1 0 SSTORE )",
"storage": {}
}
},
diff --git a/test.py b/test.py
new file mode 100755
index 000000000..e7957989d
--- /dev/null
+++ b/test.py
@@ -0,0 +1,192 @@
+#!/usr/bin/env python3
+
+# For help:
+#
+# - Run with no arguments.
+# - Ask Everett Hildenbrandt (@ehildenb).
+
+# Goals:
+#
+# - Validate test inputs with JSON Schemas.
+# - Check that tests have been filled.
+# - Filter tests based on properties.
+# - Convert between various test filler formats.
+
+# Non-goals:
+#
+# - Test filling.
+# - Test post-state checking.
+
+# Dependencies:
+#
+# - python-json
+# - python-jsonschema
+# - python-pysha3
+
+import sys
+import os
+import json
+import jsonschema
+import sha3
+
+# Utilities
+# =========
+
+# Errors/Reporting
+
+exit_status = 0
+error_log = []
+
+def _report(*msg):
+ print("== " + sys.argv[0] + ":", *msg, file=sys.stderr)
+
+def _logerror(*msg):
+ global exit_status
+ _report("ERROR:", *msg)
+ error_log.append(" ".join(msg))
+ exit_status = 1
+
+def _die(*msg, exit_code=1):
+ _report(*msg)
+ _report("exiting...")
+ sys.exit(exit_code)
+
+# Filesystem/parsing
+
+def readJSONFile(fname):
+ if not os.path.isfile(fname):
+ _die("Not a file:", fname)
+ with open(fname, "r") as f:
+ fcontents = f.read()
+ return json.loads(fcontents)
+
+def writeJSONFile(fname, fcontents):
+ if not os.path.exists(os.path.dirname(fname)):
+ os.makedirs(os.path.dirname(fname))
+ with open(fname, "w") as f:
+ f.write(json.dumps(fcontents, indent=4, sort_keys=True))
+
+# Functionality
+# =============
+
+# Listing tests
+
+def findTests(filePrefix=""):
+ return [ fullTest for fullTest in [ os.path.join(root, file) for root, _, files in os.walk(".")
+ for file in files
+ if file.endswith(".json")
+ ]
+ if fullTest.startswith(filePrefix)
+ ]
+
+def listTests(filePrefixes=[""]):
+ return [ test for fPrefix in filePrefixes
+ for test in findTests(filePrefix=fPrefix)
+ ]
+
+# Schema Validation
+
+def validateSchema(jsonFile, schemaFile):
+ testSchema = readJSONFile(schemaFile)
+ defSchema = readJSONFile("JSONSchema/definitions.json")
+ schema = { "definitions" : dict(defSchema["definitions"], **testSchema["definitions"])
+ , "patternProperties" : testSchema["patternProperties"]
+ }
+
+ jsonInput = readJSONFile(jsonFile)
+ try:
+ jsonschema.validate(jsonInput, schema)
+ except:
+ _logerror("Validation failed:", "schema", schemaFile, "on", jsonFile)
+
+def validateTestFile(jsonFile):
+ if jsonFile.startswith("./src/VMTestsFiller/"):
+ schemaFile = "JSONSchema/vm-filler-schema.json"
+ elif jsonFile.startswith("./src/GeneralStateTestsFiller/"):
+ schemaFile = "JSONSchema/st-filler-schema.json"
+ elif jsonFile.startswith("./src/BlockchainTestsFiller/"):
+ schemaFile = "JSONSchema/bc-filler-schema.json"
+ elif jsonFile.startswith("./VMTests/"):
+ schemaFile = "JSONSchema/vm-schema.json"
+ elif jsonFile.startswith("./GeneralStateTests/"):
+ schemaFile = "JSONSchema/st-schema.json"
+ elif jsonFile.startswith("./BlockchainTests/"):
+ schemaFile = "JSONSchema/bc-schema.json"
+ else:
+ _logerror("Do not know how to validate file:", jsonFile)
+ return
+ validateSchema(jsonFile, schemaFile)
+
+# Check tests filled
+
+def hashFile(fname):
+ with open(fname ,"rb") as f:
+ k = sha3.keccak_256()
+ k.update(f.read())
+ return k.hexdigest()
+
+def checkFilled(jsonFile):
+ jsonTest = readJSONFile(jsonFile)
+ if not ( jsonFile.startswith("./src/BlockchainTestsFiller/GeneralStateTests/")
+ # or jsonFile.startswith("./src/BlockchainTestsFiller/VMTests/")
+ or jsonFile.startswith("./VMTests/")
+ or jsonFile.startswith("./GeneralStateTests/")
+ or jsonFile.startswith("./TransactionTests/")
+ or jsonFile.startswith("./BlockchainTests/")
+ ):
+ _report("Not a file that is filled:", jsonFile)
+ return
+ for test in jsonTest:
+ if "_info" in jsonTest[test]:
+ fillerSource = jsonTest[test]["_info"]["source"]
+ fillerHash = jsonTest[test]["_info"]["sourceHash"]
+ if fillerHash != hashFile(fillerSource):
+ _logerror("Test must be filled:", jsonFile)
+
+# Main
+# ====
+
+def _usage():
+ usage_lines = [ ""
+ , " usage: " + sys.argv[0] + " [list|format|validate] [<TEST_FILE_PREFIX>*]"
+ , " where:"
+ , " list: command to list the matching tests."
+ , " format: command to format/sort the JSON file."
+ , " validate: command to check a file against the associated JSON schema (defaults to all files)."
+ , " <TEST_FILE_PREFIX>: file path prefix to search for tests with."
+ , " eg. './src/VMTestsFiller' './VMTests' for all VMTests and their fillers."
+ ]
+ _die("\n".join(usage_lines))
+
+def main():
+ if len(sys.argv) < 2:
+ _usage()
+ test_command = sys.argv[1]
+ if len(sys.argv) == 2:
+ testList = listTests()
+ else:
+ testList = listTests(filePrefixes=sys.argv[2:])
+
+ if len(testList) == 0:
+ _die("No tests listed!!!")
+
+ if test_command == "list":
+ testDo = lambda t: print(t)
+ elif test_command == "format":
+ testDo = lambda t: writeJSONFile(t, readJSONFile(t))
+ elif test_command == "validate":
+ testDo = validateTestFile
+ elif test_command == "checkFilled":
+ testDo = checkFilled
+ else:
+ _usage()
+
+ for test in testList:
+ _report(test_command + ":", test)
+ testDo(test)
+
+ if exit_status != 0:
+ _die("Errors reported!\n[ERROR] " + "\n[ERROR] ".join(error_log))
+
+if __name__ == "__main__":
+ main()