Traté de implementar el contrato en mi testrpc, pero recibo un error cuando mi constructor usa el tipo "dirección".
Aquí está mi código Python:
import json
import web3
from solc import compile_source
from web3.contract import ConciseContract
from web3 import Web3, EthereumTesterProvider
from web3.auto import w3
w3 = Web3(Web3.HTTPProvider("http://127.0.0.1:8545"))
# Solidity source code
contract_source_code = '''
pragma solidity ^0.4.23;
contract Demo2{
address public owner = msg.sender;
address[] user;
address Bank1;
constructor (string _ID ,address _addr ) {
}
}
'''
compiled_sol = compile_source(contract_source_code) # Compiled source code
contract_interface = compiled_sol['<stdin>:Demo2']
w3.eth.defaultAccount = w3.eth.accounts[0]
a=type(w3.eth.accounts[0])
print(a)
Demo2 = w3.eth.contract(abi=contract_interface['abi'], bytecode=contract_interface['bin'])
ab=contract_interface['abi']
print(ab)
# Submit the transaction that deploys the contract
tx_hash = Demo2.constructor("abcde","0xc69d7e6739e30796f1cc7a1a01fd0c087c4e54fd").transact()
# Wait for the transaction to be mined, and get the transaction receipt
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)
# Create the contract instance with the newly-deployed address
Demo2 = w3.eth.contract(
address=tx_receipt.contractAddress,
abi=contract_interface['abi'],
)
Finalmente lo usé
valid_address = w3.toChecksumAddress(questionable_address)
y funciona.
Supongo que estabas convirtiendo la dirección "0xc69d7e6739e30796f1cc7a1a01fd0c087c4e54fd"
de esta línea:
Demo2.constructor("abcde","0xc69d7e6739e30796f1cc7a1a01fd0c087c4e54fd")
El problema es que una conversión de esta manera le impide obtener algún beneficio de la suma de comprobación. Parece que copió/escribió la dirección desde algún lugar, y si la copió incorrectamente, se supone que la suma de verificación lo ayudará a detectarla.
¿De dónde vino la dirección? La mayoría de las fuentes deberían mostrar la dirección en formato de suma de verificación ahora. Si no pueden o no lo hacen, sería muy razonable presentar un problema solicitando el apoyo.
hhh2012aa