Contract-Development

部署合約私鑰錯誤

  • March 17, 2022

我正在關注 levelup.gitconnected 題為“Python 程序員的 DApp 開發”的教程。網址是https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28。在本教程中有一個名為 deploy.py 的 python 文件,它看起來像

*deploy.py
import json
from web3 import Web3, HTTPProvider
from web3.contract import ConciseContract

# web3.py instance
w3 = Web3(HTTPProvider("https://ropsten.infura.io/v3/<API key>"))
print(w3.isConnected())

key="<Private Key here with 0x prefix>"
acct = w3.eth.account.privateKeyToAccount(key)

# compile your smart contract with truffle first
truffleFile = json.load(open('./build/contracts/greeter.json'))
abi = truffleFile['abi']
bytecode = truffleFile['bytecode']
contract= w3.eth.contract(bytecode=bytecode, abi=abi)

#building transaction
construct_txn = contract.constructor().buildTransaction({
   'from': acct.address,
   'nonce': w3.eth.getTransactionCount(acct.address),
   'gas': 1728712,
   'gasPrice': w3.toWei('21', 'gwei')})

signed = acct.signTransaction(construct_txn)

tx_hash=w3.eth.sendRawTransaction(signed.rawTransaction)
print(tx_hash.hex())
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)
print("Contract Deployed At:", tx_receipt['contractAddress'])

在第 10 行 (key="<Private Key here with 0x prefix>") 當我輸入我的密鑰時,我使用 0x 前綴收到一條錯誤消息,如下所示:

ValueError:私鑰必須正好是 32 字節長,而不是 34 字節

我在沒有 0x 前綴的情況下嘗試了它,但出現錯誤:

ValueError:私鑰的長度必須正好為 32 字節,而不是 32 字節。

我錯過了什麼?先感謝您。

不久前我遇到了類似的問題。此錯誤很可能是由於在您應該使用 ETH 和 LINK 資助的錢包私鑰時意外使用 Infura“項目密碼”作為私鑰造成的。確保首先將測試 ETH 和 LINK 代幣放入錢包。

我在將私鑰與其他密鑰和地址混淆時遇到了這個問題。使用 MetaMask,可以在“帳戶詳細資訊 > 導出私鑰”下找到正確的私鑰。

引用自:https://ethereum.stackexchange.com/questions/106455