Я могу протестировать с помощью truffle и успешно подтвердить, что значения моего развернутого контракта верны, но как в testrpc, так и в приватном geth фактические значения в моем контракте пусты.
Я инициализирую свой контракт на ранней стадии
this.contract = this.web3.eth.contract(this.abi);
затем через графический интерфейс создается новый контракт:
this.deployedContract = this.contract.new(name, {from: contractAddress, gas: 3000000, data: this.byteCode}, (contractError, contractResult) => {
if (!contractError && contractResult) {
console.log('contract address: ' + contractResult.address);
console.log('contractResult: ' + contractResult);
}else if(contractError){
console.log("contractError: " + contractError);
}
});
Контракт добывается, и я получаю адрес, который я ищу. И в консоли geth, и через API JavaScript я вижу результат name =0x0000000000000000000000000000000000000000000000000000000000000000
имя байт32
В консоли geth я просматриваю транзакцию и вижу cumulativeGasUsed: 1109932, что меньше 3000000, которые я объявил заранее.
Я также замечаю, что газ не был снят с моего счета.
Казалось бы, если у вас есть контракт, который принимает аргументы в свои параметры, если вы не сопоставите их вместе, то контракт будет создан как бы с пустым конструктором (по умолчанию?), без каких-либо ошибок или предупреждений.
Итак, в моем случае в моем контракте был один конструктор, который принимал имя и фамилию, я указал только имя. бинго, пустой контракт.
Луис Соареш
Филипп Гибб