簡體   English   中英

從Web3.py部署與OpenZeppelin簽訂的合同

[英]Deploy contract made with OpenZeppelin from Web3.py

我遵循了一個以ICO和Crowdsale(基於我創建的ICO)的創建為中心的教程。

我知道這是一個非常經典的教程,但是現在我將在Web3.py庫的Django平台中集成了在OpenZeppelin和Truffle框架的幫助下達成的2個合同,但遇到了問題。

我已經用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()

我還已經在Ganache區塊鏈模擬器中初始化了Coin合同。

但是現在我不知道如何在區塊鏈中部署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()

此部署會產生ganache錯誤:

處理事務還原時出錯vm異常

有什么想法如何正確地部署在web3.py中嗎?


作為參考,下面是使用Truffle框架部署眾籌代碼的成功代碼:

return deployer
    .then(() => {
        return deployer.deploy(GustavoCoin);
    })
    .then(() => {
        return deployer.deploy(
            GustavoCoinCrowdsale,
            openingTime,
            closingTime,
            rate,
            wallet,
            GustavoCoin.address
        );
    });
};

發送部署時,請記住設置重要的交易字段。 例如,您可以設置用於進行交易簽名的帳戶。 這意味着替換當前行:

crowdsale_txn_hash = construct_crowdsale.transact()

用新行:

tx_param = {
    'from': w3.eth.accounts[1],
    'gasPrice': 2000,
}
crowdsale_txn_hash = construct_crowdsale.transact(tx_param)

請注意,這類似於在硬幣合約中設置發送者的方式(使用較舊的deploy() API):

tx_param = {
    'from': w3.eth.accounts[1],
    'gasPrice': 2000,
}
tx_hash = contract_coin.deploy(transaction=tx_param)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM