koogawa blog

iOS、Android、foursquareに関する話題

If you intended this as a fallback function or a function to handle plain ether transactions, use the "fallback" keyword or the "receive" keyword instead.

SolidityとEthereumによる実践スマートコントラクト開発 ―Truffle Suiteを用いた開発の基礎からデプロイまで

👆こちらの本のサンプルを試しているとたまに出てくる警告です。

function () public payable {}

上記のようなフォールバック関数の定義箇所に原因がありそうです。

どうすればよい?

function() public payable {}

の代わりに

fallback() external payable {}

を使いましょう。

payable - Compiler solc expected a state variable declaration - Ethereum Stack Exchange

解説

Solidity v0.6.0からフォールバック関数の定義方法が変わったようです。

The unnamed function commonly referred to as “fallback function” was split up into a new fallback function that is defined using the fallback keyword and a receive ether function defined using the receive keyword.

Solidity v0.6.0 Breaking Changes — Solidity 0.7.4 documentation