Можно ли вручную добавить функции в 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"
}
]
в прошлом эта проблема решалась много раз, но вы определенно можете избавиться от нее, перейдя на truffle 3.x, удалив папку build/contracts/ (но сделайте ее резервную копию на всякий случай!) и выполните truffle compile --all
.
Кроме того, вы, конечно, можете добавлять всю информацию о функциях в файл JSON как угодно, просто она должна соответствовать коду солидности.
Джамаркус_13
Никита Фукс