智能合约:从 Python 调用智能合约

以太坊带来了智能合约的进步,其是可公开验证的代码。如果我们改变合约状态,我们将花费一些gas。现在,让我们创建一个Python程序,它可以在以太坊上调用智能合约。因为我们不想实验中支付费用,所以我们将运行Ganache,这是一个本地以太坊实例。

首先,我们去Remix.ethereum.org并添加我们的代码:

我们添加的代码中包括add(), sub(), mul(), sqr()和sqrt()函数:

pragma solidity ^0.8.0;contract mymath {function sqrt(uint x) public view returns (uint y) {uint z = (x + 1) / 2;y = x;while (z < y) {y = z;z = (x / z + z) / 2;}}function sqr(uint a) public view returns (uint) {uint c = a * a;return c;}function mul(uint a, uint b) public view returns (uint) {uint c = a * b;return c;}function sub(uint a, uint b) public view returns (uint) {return a - b;}function add(uint a, uint b) public view returns (uint) {uint c = a + b;return c;}}

现在编译我们的智能合约,并生成ABI(应用程序二进制接口)。通过ABI,我们可以创建智能合约中所有数据元素和函数。这通常用JSON格式定义。在我们的例子中,ABI是(可以从Remix中的ABI复制按钮中复制):

{"inputs": [{"internalType": "uint256","name": "a","type": "uint256"},{"internalType": "uint256","name"