引用书中的一个例子:
contract StockPriceOracle {
uint quoteFee = 500;
mapping (string => uint) private stockPrices;
//...
function getStockPrice(string _stockTicker) payable returns (uint _stockPrice) {
if (msg.value == quoteFee) {
//...
_stockPrice = stockPrices[_stockTicker];
} else {
revert();
}
}
}有一个返回值的payable函数。如果我错了,请纠正我,但据我所知,这个例子没有任何实际意义。为了使调用者能够检索所需的信息(股票价格),函数必须发出一个事件。或者,上面的代码实际上是实用的吗?
发布于 2020-01-20 09:05:03
为了使调用者能够检索所需的信息(股票价格),函数必须发出一个事件。
例如,对于非链式来电者来说是这样的:
或者,上面的代码实际上是实用的吗?
是的,它(返回的值)对于链上调用者是实用的,例如:
请注意,函数的访问级别(public/private/external/internal)在限制此处允许哪些调用方类型方面也发挥了作用。
https://ethereum.stackexchange.com/questions/79123
复制相似问题