es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamadas a funciones en contratos inteligentes desde scripts y comprobación del valor de variables.

Actualmente estoy usando Brownie para aprender el desarrollo de contratos inteligentes y blockchain. Tengo problemas para entender cómo llamar funciones y verificar el valor de variables de contratos inteligentes usando un script de Python. ¿Cómo puedo hacer esto?

A continuación, tengo un contrato “DutchAuction” donde he definido una función “bid()” que devuelve “Hola mundo” solo para fines de prueba que estoy tratando de llamar.

pragma solidity ^0.8.10;

import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";

contract DutchAuction {

    uint public startTime;
    uint public endTime;

    uint public price;
    uint public startPrice;

    address public assetOwner;

    constructor(uint _startPrice, uint _endTime) public {
        startTime = block.timestamp;
        price = _startPrice;
        startPrice = _startPrice;
        endTime = _endTime;
        assetOwner = msg.sender;
    }

    function bid() public returns (string calldata) {
        return 'Hola mundo';
    }

}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para llamar a la función bid() y obtener el valor de retorno del contrato inteligente DutchAuction usando Python, sigue los siguientes pasos utilizando Brownie:

    1. En tu script de Python, importa el contrato DutchAuction desde su archivo y el módulo accounts de Brownie:
    from brownie import accounts, DutchAuction
    
    1. Conéctate a la red de Ethereum y establece la cuenta predeterminada a utilizar (si aún no lo has hecho):
    network.connect('rinkeby')
    accounts.load('my_wallet')
    
    1. Crea un objeto del contrato DutchAuction utilizando su dirección en la red:
    auction = DutchAuction.at('0x123abc...')
    
    1. Llama a la función bid() usando el objeto auction y almacena el valor de retorno:
    result = auction.bid()
    
    1. Imprime el resultado para verificar que coincida con el valor esperado:
    print(result)
    

    En este caso, el valor de retorno de bid() es 'hello world', el cual debería ser impreso en la consola al llamar la función.

Comments are closed.