Я обнаружил, что если вы вводите свои входные данные в формат JSON для документов Solidity, то вы хороши независимо от компилятора.Перед компиляцией "stringify" файла (JSON.stringify).После того, как файл скомпилирован, объект будет в строковой форме, поэтому вы можете проанализировать его (JSON.parse), чтобы работать с ним оттуда.Вот пример кода с console.log () контракта в форме JSON, чтобы вы могли увидеть, с чем вы работаете.
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const inboxPath = path.resolve(__dirname, 'contracts', 'inbox.sol');
const source = fs.readFileSync(inboxPath, 'utf8');
var solcInput = {
language: "Solidity",
sources: {
contract: {
content: source
}
},
settings: {
optimizer: {
enabled: true
},
evmVersion: "byzantium",
outputSelection: {
"*": {
"": [
"legacyAST",
"ast"
],
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap",
"evm.gasEstimates"
]
},
}
}
};
solcInput = JSON.stringify(solcInput);
var contractObject = solc.compile(solcInput);
contractObject = JSON.parse(contractObject);
console.log(contractObject);