Я пытаюсь развернуть контракт двумя разными способами, у меня ничего не получается.
Первый способ:
1. geth console —rinkeby —rpc —rpcapi db,eth,net,web3,personal —unlock="0x..." 2>>geth.log
У меня есть эфир на аккаунте, я правильно ввожу пароль, я уверен, что аккаунт есть в
списке solc
eth.accounts переменные bin
и abi
. Я ставлю 0x
перед двоичным кодом.
3. var contract = web3.eth.contract(abi)
4.var token = myContract.new( {from: eth.coinbase, data: bin, gas: 1000000}, function(e, myContract) { if (e) { console.log(e); } else { if (myContract.address) { console.log ("mined " +myCcontract.address); } } })
И это говорит, что
Ошибка: код контракта не может быть сохранен, проверьте количество газа.
Второй способ — использовать трюфель. Мне уже много раз удавалось развернуть контракт на rinkeby, но теперь я застрял на этой ошибке.
1. Запускаю geth
и разблокирую аккаунт
2. Там мой truffle.js
:
module.exports = {
сети: {
разработка: {
хост: "localhost",
порт: 8545,
network_id: "*", газ: 900000},
rinkeby: {
хост: '127.0.0.1',
порт: 8545,
network_id: 4 ,
gas: 4612388, // Лимит газа, используемый для развертывания
из: "0xeb1eb48fc3c2756cde3dce8a53472e437062f976" } } };
3. truffle migrate --reset --network rinkeby
И это говорит
Произошла ошибка, спасение. Состояние сети неизвестно. Просмотрите успешные транзакции вручную. TypeError: contract.detectNetwork не является функцией в /usr/local/lib/node_modules/truffle/build/cli.bundled.js:201861:21 в /usr/local/lib/node_modules/truffle/build/cli.bundled. js: 326484: 15 в
Моя цель состояла в том, чтобы научиться взаимодействовать с функциями контракта через консоль geth или truffle. Но что-то пошло не так. Пожалуйста, помогите мне исправить это.
Если вы дочитали до конца этого вопроса, спасибо уже
попробуйте сначала с testrpc - https://github.com/ethereumjs/testrpc .
И это сообщение об ошибке «Обнаружена ошибка, спасение. Состояние сети неизвестно» означает, что geth работает неправильно, или не использует порт 8545, или не работает из-за IP-адреса 127.0.0.1.
Попробуйте через testrpc. Вы получите большой опыт. Быстрее взаимодействовать с контрактами для целей тестирования
В качестве альтернативы я написал небольшую библиотеку для развертывания, которая может кому-то пригодиться. Он развертывается с использованием ethers.js (стабильный родственник web3.js), и он многословен и блестящ :)
const etherlime = require('etherlime');
const ICOTokenContract = require('./build/contracts/ICOToken.json');
const randomAddress = '0xda8a06f1c910cab18ad187be1faa2b8606c2ec86';
const defaultConfigs = {
gasPrice: 20000000000,
gasLimit: 4700000
}
const deployer = new etherlime.InfuraPrivateKeyDeployer('Your Privste KEY', 'ropsten', 'Your infura API key', defaultConfigs);
const runICODeployment = async () => {
const contractWrapper = await deployer.deploy(ICOTokenContract);
const transferTransaction = await contractWrapper.contract.transferOwnership(randomAddress);
const result = await contractWrapper.verboseWaitForTransaction(transferTransaction.hash, 'Transfer Ownership');
}
runICODeployment()
Поместите это в файл и запустите с помощью node.
Олеся Костеева
Луис Соарес