Артефакты ABI повреждены, редактировать ABI вручную?

Можно ли вручную добавить функции в ABI, в частности функции getProduct и addProductToStore? Есть ли разница? Уже пробовал удалять сборку + перекомпилировать + перемигрировать, та же проблема. Думаете, проблема в том, что процесс сборки Truffle портит артефакты?

Аналогично этой проблеме: https://github.com/trufflesuite/truffle/issues/685

Ремикс :

[
    {
        "constant": true,
        "inputs": [],
        "name": "productIndex",
        "outputs": [
            {
                "name": "",
                "type": "uint256"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            {
                "name": "_productId",
                "type": "uint256"
            }
        ],
        "name": "getProduct",
        "outputs": [
            {
                "name": "",
                "type": "uint256"
            },
            {
                "name": "",
                "type": "string"
            },
            {
                "name": "",
                "type": "string"
            },
            {
                "name": "",
                "type": "string"
            },
            {
                "name": "",
                "type": "string"
            },
            {
                "name": "",
                "type": "uint256"
            },
            {
                "name": "",
                "type": "uint256"
            },
            {
                "name": "",
                "type": "uint256"
            },
            {
                "name": "",
                "type": "uint8"
            },
            {
                "name": "",
                "type": "uint8"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "name": "_name",
                "type": "string"
            },
            {
                "name": "_category",
                "type": "string"
            },
            {
                "name": "_imageLink",
                "type": "string"
            },
            {
                "name": "_descLink",
                "type": "string"
            },
            {
                "name": "_auctionStartTime",
                "type": "uint256"
            },
            {
                "name": "_auctionEndTime",
                "type": "uint256"
            },
            {
                "name": "_startPrice",
                "type": "uint256"
            },
            {
                "name": "_productCondition",
                "type": "uint256"
            }
        ],
        "name": "addProductToStore",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "constructor"
    }
]

Локальный JSON-файл:

"abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "productIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    }
  ]

Ответы (1)

в прошлом эта проблема решалась много раз, но вы определенно можете избавиться от нее, перейдя на truffle 3.x, удалив папку build/contracts/ (но сделайте ее резервную копию на всякий случай!) и выполните truffle compile --all.

Кроме того, вы, конечно, можете добавлять всю информацию о функциях в файл JSON как угодно, просто она должна соответствовать коду солидности.

Не могли бы вы указать ссылки, где проблема предположительно была исправлена? Спасибо!