Развертывание контракта с использованием solcjs
Я пытаюсь развернуть контракт, используя solcjs, следуя этой публикации в блоге https://blog.topl.me/how-to-deploy-solidity/
вот мой код
const web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
async function compileAndDeploy() {
let ambrosiaContract;
try {
let contract = await fs.readFileSync( path.join(__dirname, './Ambrosia.sol') );
let Ambrosia = contract.toString();
let input = {};
input[ path.join(__dirname, './Ambrosia.sol')] = Ambrosia;
console.log('> Compiling Storage');
let output = solc.compile({sources: input}, 1);
console.log(output.contracts, output.formal);
ambrosiaContract = output.contracts['Ambrosia'];
}
catch (e) {
console.log(e);
}
console.log('deploying...')
let ambrosiaInstance = await deployStorage(ambrosiaContract)
console.log('...deployed at ' + ambrosiaInstance.address)
}
compileAndDeploy();
теперь, когда я действительно запускаю скрипт, компилятор отправляет мне эту ошибку обратно.
Ошибка: тип "bytes32" не поддерживается для переменной состояния.\ N отображение (адрес => bytes32) ресторанов;\n
вот мой код контракта.
pragma solidity ^0.4.4;
contract Ambrosia {
mapping (address => bytes32) restaurants;
address _owner;
event Transfer(address indexed _from, address indexed _to, uint256 _value); // listen to that event whenever a transfer has been made..
event Order(address indexed _from, address indexed _to, uint256 _value); // listen to that event whenever an order is triggered
function Ambrosia() {
_owner = msg.sender;
}
}
Я использую Solcjs версии 0.4.4 ошибка не зависит от клиента узла, это происходит как с geth, так и с js-eth в сети разработки
1 ответ
Эта ошибка из инструмента формальной проверки Солидности. В настоящее время он не поддерживает большинство функций Solidity, поэтому вы можете игнорировать их.
Фактические ошибки компиляции возвращаются в output.errors
массив. Попробуйте добавить опечатку и запустите:
const output = solc.compile({sources: input}, 1);
console.log(output.errors);