ABI-Artefakte beschädigt, ABI manuell bearbeiten?

Ist es möglich, der ABI manuell Funktionen hinzuzufügen, insbesondere die Funktionen getProduct und addProductToStore? Macht es einen Unterschied? Habe bereits versucht, Build zu löschen + neu zu kompilieren + neu zu migrieren, dasselbe Problem. Glauben Sie, dass es ein Problem mit dem Build-Prozess von Truffle ist, der die Artefakte beschädigt?

Ähnlich wie bei diesem Problem: https://github.com/trufflesuite/truffle/issues/685

Remix:

[
    {
        "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"
    }
]

Lokale Json-Datei:

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

Antworten (1)

Dieses Problem wurde in der Vergangenheit oft behoben, aber Sie können es definitiv loswerden, indem Sie auf Truffle 3.x herunterstufen, den Ordner build/contracts/ löschen (aber sichern Sie ihn, nur für den Fall!) und tun Sie truffle compile --all.

Außerdem können Sie natürlich alle Informationen zu Funktionen beliebig in die JSON-Datei einfügen, sie müssen nur dem Solidity-Code entsprechen.

Könnten Sie bitte auf Links verweisen, wo das Problem angeblich behoben wurde? Danke!