ethereum - 是否可以仅通过向某个地址进行交易来调用合约函数

标签 ethereum

目前我正在尝试学习以太坊和智能合约。我读了这个教程:Dapps for beginners 我现在只是想知道,是否每次都必须调用合约中的函数(如上面的教程中所示),或者当我将一些以太坊转移到该合约地址时是否可能执行特定函数?

示例: 我执行下面的代码,接收者地址也是有合约的地址。现在应该在接收器函数中执行一个特定函数。

eth.sendTransaction({from:发送者, to:接收者, value:金额})

最佳答案

您应该在智能合约中创建一个无名应付函数。

如果有人在您的合约地址发送原始交易,这将是默认执行的函数。

function() payable public {

}

此外,这里的另一个答案指出您需要知道合约 ABI 才能与合约进行通信,但这不是真的。

您需要知道合约地址、函数名称以及输入输出参数类型。 (您可以使用 Web3 的 method.call 或 method.sendTransaction 发送交易对象中的编码数据并与合约交互。)

ABI 可能有此信息,但 ABI 本身并不是必需的。

关于ethereum - 是否可以仅通过向某个地址进行交易来调用合约函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37704011/

相关文章:

ethereum - 如何使用 ethers.js 创建无气体交易/元交易?

ubuntu - 如何在 Ubuntu 上安装 web3?

ruby - 无法将非字符串解码为 common.Address 类型的 Go 结构字段 SendTxArgs.from

ethereum - 林克比 : "replacement transaction underpriced"

ethereum - 通过 geth 检查时,我的以太坊余额似乎为 0

docker - 如何使用 Docker-compose 到 `geth init` 并开始 geth 挖矿?

ethereum - 在以太坊中,什么是私有(private)测试网,我为什么需要它,以及如何设置它?

javascript - 在javascripts中用汉字将十六进制解码为字符串

ethereum - geth控制台中如何关闭控制台

blockchain - 在 Windows 7 上安装 Ganache.appx