Необходима помощь - Контракт развернут, но выполнение метода всегда возвращает нуль

Я создал частную цепочку и попытался создать примерный контракт, указанный в https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions

Я мог бы создавать, компилировать и даже развертывать контракт, но когда я выполняю следующий оператор:

myMultiply7.multiply.call(6)

Он всегда возвращает «0». Я что-то пропустил?

Шаги, которые я сделал:

  1. Создал цепочку блоков.
  2. Был ли какой-то майнинг, чтобы у меня мог быть какой-то эфир в моей учетной записи. Поскольку это была частная сеть, я мог бы получить красивое количество эфира в моей основной учетной записи.
  3. Создайте и скомпилируйте контракт в Geth Console следующим образом:

    primaryAccount = eth.accounts[0]
    
    source = "contract testA { function multiply(uint a) returns(uint d) { return a * 5; } }"
    // compile with solc
    contract = eth.compile.solidity(source).testA
    // create contract object
    var MyContract = eth.contract(contract.info.abiDefinition)
    // extracts info from contract, save the json serialisation in the given file,
    //contenthash = admin.saveInfo(contract.info, "~/info.json")
    // send off the contract to the blockchain
    var mycon = MyContract.new({from: primaryAccount, data: contract.code}, function(error, contract){
        if(!error && contract.address) {
            console.log("Contract mined! address: " + contract.address + " transactionHash: " + contract.transactionHash);
        }
    });
    

Получил адрес как вывод, но не имеет хеш транзакции (может ли это быть проблемой?).

Следующее:

var address = "<Address received in above code >";

var Multiply = web3.eth.contract([{constant:false,inputs:[{name:'a',type:'uint256'}],name:'multiply',outputs:[{name:'d',type:'uint256'}],type:'function'}]);
var myMultiply = Multiply.at(address);
myMultiply.multiply.call(9);

Но последняя строка всегда возвращает «0».

Невозможно понять, почему это происходит. Я пропустил некоторые шаги? Нужно ли мне что-то делать, чтобы выполнить контракт?

Спасибо в Advance .. Мадхукар

5 голосов | спросил MadhukarChaubey 25 J000000Monday16 2016, 11:26:31

1 ответ


1
  

Получил адрес как вывод, но не имеет хеш транзакции (может ли это быть проблемой?).

Я понимаю, что вы не заминировали контракт, и поэтому его не существует. Если вы находитесь в частной сети, кто-то должен разминировать каждую транзакцию:

miner.start(); admin.sleepBlocks(1); miner.stop();
ответил Roland Kofler 25 J000000Monday16 2016, 15:10:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132