Я следил за учебником, посвященным созданию ICO и Crowdsale (на основе созданного мной ICO).
Я знаю, что это очень классический учебник, но теперь я интегрирую 2 контракта, созданные с помощью OpenZeppelin и Truffle framework на платформе Django с библиотекой Web3.py, и у меня возникает проблема.
Я скомпилировал исходники контракта с помощью solc и получил файлы abi и bin.
Я открыл такие файлы в python
with open("reservations/contracts/compiled/GustavoCoin.abi") as contract_abi_file_coin:
contract_abi_coin = json.load(contract_abi_file_coin)
with open("reservations/contracts/compiled/GustavoCoin.bin") as contract_bin_file_coin:
contract_bytecode_coin = '0x' + contract_bin_file_coin.read()
with open("reservations/contracts/compiled/GustavoCoin.abi") as contract_abi_file:
contract_abi = json.load(contract_abi_file)
with open("reservations/contracts/compiled/GustavoCoinCrowdsale.bin") as contract_bin_file:
contract_bytecode = '0x' + contract_bin_file.read()
Я также инициализировал контракт Coin в эмуляторе блокчейна Ganache.
Но теперь я не знаю, как развернуть контракт Crowdsale в блокчейне.
Вот успешный код для развертывания монеты:
contract_coin = w3.eth.contract(abi=contract_abi_coin, bytecode=contract_bytecode_coin)
tx_param = {
'from': w3.eth.accounts[1],
'gasPrice': 2000,
}
tx_hash = contract_coin.deploy(transaction=tx_param)
Вот код ошибки для развертывания контракта краудсейла:
construct_crowdsale = contract.constructor(11, 11, 1, w3.eth.accounts[1], tx_receipt.contractAddress)
crowdsale_txn_hash = construct_crowdsale.transact()
Это развертывание генерирует ошибку ганаша:
ошибка vm исключение при обработке возврата транзакции
Есть идеи, как правильно развернуть в web3.py?
В качестве ориентира вот успешный код для развертывания кода краудсейла с фреймворком Truffle:
return deployer
.then(() => {
return deployer.deploy(GustavoCoin);
})
.then(() => {
return deployer.deploy(
GustavoCoinCrowdsale,
openingTime,
closingTime,
rate,
wallet,
GustavoCoin.address
);
});
};
tx_hash_prova = contract.constructor(11, 11, 1, w3.eth.accounts[1], tx_receipt.contractAddress).transact()
, последний параметр - это адрес контракта монеты, затем при его развертывании возникает ошибка - person Flamel   schedule 18.11.2018