constructor web3.py (tipo de dirección)

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 utilicé '' dirección_válida = w3.toChecksumAddress(dirección_cuestionable) '' y funciona.

Respuestas (1)

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.

Gracias por la respuesta, al principio no noté el registro de errores. La dirección es de testrpc