已知bug列表

在下面,你可以找到一个 JSON 格式的列表,上面列出了 Solidity 编译器上一些已知的安全相关的 bug。 该文件被放置于 。 该列表可以追溯到 0.3.0 版本,只在此版本之前存在的 bug 没有被列入。

这里,还有另外一个 文件。 该文件可用于查询特定的某个编译器版本会受哪些 bug 影响。

合约的源文件检查工具以及其他与合约交互的工具,需基于以下规则查阅上述 bug 列表文件:

  • 如果合约是用每日构建版本的编译器编译,而不是发布版本的编译器,那就有点可疑了。上述bug列表不跟踪未发布或每日构建版本的编译器。
  • 如果一个合约并不是由它被创建时点的最新版本编译器所编译的,那么这也是值得怀疑的。对于由其他合约创建的合约,您必须沿着创建链追溯最初交易,并使用该交易的日期作为创建日期。
  • 高度可疑的情况是,如果一份合约由一个包含已知 bug 的编译器编译,但在合约创建时,已修复了相应 bug 的新版编译器已经发布了。

下面这份包含已知 bug 的 JSON 文件实际上是一个对象数组,每个对象对应一个 bug,并包含以下的 keys :

name
赋予该 bug 的唯一的名字
summary
对该 bug 的简要描述
description
对该 bug 的详细描述
link
包含更多详尽信息的链接,可选
introduced
第一个包含该 bug 的编译器的发布版本,可选
fixed
第一个不再包含该 bug 的编译器的发布版本
publish
该 bug 被公开的日期,可选
severity
bug 的严重性: very low, low, medium, high。综合考虑了在合约测试中的可发现性、发生的可能性和被利用后的潜在损害。
conditions
触发该 bug 所需满足的条件。当前,这是一个包含了 optimizer 布尔值的对象,这意味着只有打开优化器选项时,才会触发该 bug。 如果没有给出任何条件,则意味着此 bug 始终存在。
{
  "0.1.0": {
      "bugs": [
          "ExpExponentCleanup",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-07-10"
  },
  "0.1.1": {
      "bugs": [
          "ExpExponentCleanup",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-08-04"
  },
  "0.1.2": {
      "bugs": [
          "ExpExponentCleanup",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-08-20"
  },
  "0.1.3": {
      "bugs": [
          "ExpExponentCleanup",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-09-25"
  },
  "0.1.4": {
      "bugs": [
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-09-30"
  },
  "0.1.5": {
      "bugs": [
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-10-07"
  },
  "0.1.6": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-10-16"
  },
  "0.1.7": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-11-17"
  },
  "0.2.0": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2015-12-02"
  },
  "0.2.1": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2016-01-30"
  },
  "0.2.2": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits",
          "AncientCompiler"
      ],
      "released": "2016-02-17"
  },
  "0.3.0": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits",
          "ArrayAccessCleanHigherOrderBits"
      ],
      "released": "2016-03-11"
  },
  "0.3.1": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits"
      ],
      "released": "2016-03-31"
  },
  "0.3.2": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin",
          "CleanBytesHigherOrderBits"
      ],
      "released": "2016-04-18"
  },
  "0.3.3": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin"
      ],
      "released": "2016-05-27"
  },
  "0.3.4": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin"
      ],
      "released": "2016-05-31"
  },
  "0.3.5": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther",
          "DynamicAllocationInfiniteLoop",
          "OptimizerClearStateOnCodePathJoin"
      ],
      "released": "2016-06-10"
  },
  "0.3.6": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "SendFailsForZeroEther"
      ],
      "released": "2016-08-10"
  },
  "0.4.0": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "LibrariesNotCallableFromPayableFunctions"
      ],
      "released": "2016-09-08"
  },
  "0.4.1": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3",
          "LibrariesNotCallableFromPayableFunctions"
      ],
      "released": "2016-09-09"
  },
  "0.4.10": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction"
      ],
      "released": "2017-03-15"
  },
  "0.4.11": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral"
      ],
      "released": "2017-05-03"
  },
  "0.4.12": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput"
      ],
      "released": "2017-07-03"
  },
  "0.4.13": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput"
      ],
      "released": "2017-07-06"
  },
  "0.4.14": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue"
      ],
      "released": "2017-07-31"
  },
  "0.4.15": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector"
      ],
      "released": "2017-08-08"
  },
  "0.4.16": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector"
      ],
      "released": "2017-08-24"
  },
  "0.4.17": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector"
      ],
      "released": "2017-09-21"
  },
  "0.4.18": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData",
          "NestedArrayFunctionCallDecoder"
      ],
      "released": "2017-10-18"
  },
  "0.4.19": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ABIEncoderV2PackedStorage_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData",
          "NestedArrayFunctionCallDecoder"
      ],
      "released": "2017-11-30"
  },
  "0.4.2": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage",
          "OptimizerStaleKnowledgeAboutSHA3"
      ],
      "released": "2016-09-17"
  },
  "0.4.20": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ABIEncoderV2PackedStorage_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData",
          "NestedArrayFunctionCallDecoder"
      ],
      "released": "2018-02-14"
  },
  "0.4.21": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ABIEncoderV2PackedStorage_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData",
          "NestedArrayFunctionCallDecoder"
      ],
      "released": "2018-03-07"
  },
  "0.4.22": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ABIEncoderV2PackedStorage_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData",
          "OneOfTwoConstructorsSkipped"
      ],
      "released": "2018-04-16"
  },
  "0.4.23": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ABIEncoderV2PackedStorage_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData"
      ],
      "released": "2018-04-19"
  },
  "0.4.24": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ABIEncoderV2PackedStorage_0.4.x",
          "ExpExponentCleanup",
          "EventStructWrongData"
      ],
      "released": "2018-05-16"
  },
  "0.4.25": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ABIEncoderV2PackedStorage_0.4.x"
      ],
      "released": "2018-09-12"
  },
  "0.4.26": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2"
      ],
      "released": "2019-04-29"
  },
  "0.4.3": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "HighOrderByteCleanStorage"
      ],
      "released": "2016-10-25"
  },
  "0.4.4": {
      "bugs": [
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored"
      ],
      "released": "2016-10-31"
  },
  "0.4.5": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored",
          "OptimizerStateKnowledgeNotResetForJumpdest"
      ],
      "released": "2016-11-21"
  },
  "0.4.6": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction",
          "IdentityPrecompileReturnIgnored"
      ],
      "released": "2016-11-22"
  },
  "0.4.7": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction"
      ],
      "released": "2016-12-15"
  },
  "0.4.8": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction"
      ],
      "released": "2017-01-13"
  },
  "0.4.9": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "UninitializedFunctionPointerInConstructor_0.4.x",
          "IncorrectEventSignatureInLibraries_0.4.x",
          "ExpExponentCleanup",
          "NestedArrayFunctionCallDecoder",
          "ZeroFunctionSelector",
          "DelegateCallReturnValue",
          "ECRecoverMalformedInput",
          "SkipEmptyStringLiteral",
          "ConstantOptimizerSubtraction"
      ],
      "released": "2017-01-31"
  },
  "0.5.0": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries",
          "ABIEncoderV2PackedStorage"
      ],
      "released": "2018-11-13"
  },
  "0.5.1": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries",
          "ABIEncoderV2PackedStorage"
      ],
      "released": "2018-12-03"
  },
  "0.5.10": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5",
          "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers"
      ],
      "released": "2019-06-25"
  },
  "0.5.11": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5"
      ],
      "released": "2019-08-12"
  },
  "0.5.12": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5"
      ],
      "released": "2019-10-01"
  },
  "0.5.13": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5"
      ],
      "released": "2019-11-14"
  },
  "0.5.14": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5",
          "ABIEncoderV2LoopYulOptimizer"
      ],
      "released": "2019-12-09"
  },
  "0.5.15": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5"
      ],
      "released": "2019-12-17"
  },
  "0.5.16": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden"
      ],
      "released": "2020-01-02"
  },
  "0.5.17": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow"
      ],
      "released": "2020-03-17"
  },
  "0.5.2": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries",
          "ABIEncoderV2PackedStorage"
      ],
      "released": "2018-12-19"
  },
  "0.5.3": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries",
          "ABIEncoderV2PackedStorage"
      ],
      "released": "2019-01-22"
  },
  "0.5.4": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries",
          "ABIEncoderV2PackedStorage"
      ],
      "released": "2019-02-12"
  },
  "0.5.5": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries",
          "ABIEncoderV2PackedStorage",
          "IncorrectByteInstructionOptimization",
          "DoubleShiftSizeOverflow"
      ],
      "released": "2019-03-05"
  },
  "0.5.6": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries",
          "ABIEncoderV2PackedStorage",
          "IncorrectByteInstructionOptimization"
      ],
      "released": "2019-03-13"
  },
  "0.5.7": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2",
          "UninitializedFunctionPointerInConstructor",
          "IncorrectEventSignatureInLibraries"
      ],
      "released": "2019-03-26"
  },
  "0.5.8": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5",
          "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement",
          "DynamicConstructorArgumentsClippedABIV2"
      ],
      "released": "2019-04-30"
  },
  "0.5.9": {
      "bugs": [
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "privateCanBeOverridden",
          "YulOptimizerRedundantAssignmentBreakContinue0.5",
          "ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembers",
          "SignedArrayStorageCopy",
          "ABIEncoderV2StorageArrayWithMultiSlotElement"
      ],
      "released": "2019-05-28"
  },
  "0.6.0": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow",
          "YulOptimizerRedundantAssignmentBreakContinue"
      ],
      "released": "2019-12-17"
  },
  "0.6.1": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow"
      ],
      "released": "2020-01-02"
  },
  "0.6.2": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow"
      ],
      "released": "2020-01-27"
  },
  "0.6.3": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow"
      ],
      "released": "2020-02-18"
  },
  "0.6.4": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents",
          "MemoryArrayCreationOverflow"
      ],
      "released": "2020-03-10"
  },
  "0.6.5": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck",
          "TupleAssignmentMultiStackSlotComponents"
      ],
      "released": "2020-04-06"
  },
  "0.6.6": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck"
      ],
      "released": "2020-04-09"
  },
  "0.6.7": {
      "bugs": [
          "MissingEscapingInFormatting",
          "ArraySliceDynamicallyEncodedBaseType",
          "ImplicitConstructorCallvalueCheck"
      ],
      "released": "2020-05-04"
  },
  "0.6.8": {
      "bugs": [],
      "released": "2020-05-14"
  },
  "0.6.9": {
      "bugs": [],
      "released": "2020-06-04"
  },
  "0.7.0": {
    "bugs": [
        "EmptyByteArrayCopy",
        "DynamicArrayCleanup"
    ],
    "released": "2020-07-28"
  },
  "0.7.1": {
      "bugs": [
          "EmptyByteArrayCopy",
          "DynamicArrayCleanup",
          "FreeFunctionRedefinition"
      ],
      "released": "2020-09-02"
  },
  "0.7.2": {
      "bugs": [
          "EmptyByteArrayCopy",
          "DynamicArrayCleanup"
      ],
      "released": "2020-09-28"
  },
  "0.7.3": {
      "bugs": [
          "EmptyByteArrayCopy"
      ],
      "released": "2020-10-07"
  },
  "0.7.4": {
      "bugs": [],
      "released": "2020-10-19"
  },
  "0.7.5": {
      "bugs": [],
      "released": "2020-11-18"
  },
  "0.7.6": {
      "bugs": [],
      "released": "2020-12-16"
  },
  "0.8.0": {
      "bugs": [],
      "released": "2020-12-16"
  }
}