Skip to content

Commit 950cf4b

Browse files
authored
update fallback
1 parent 11e4eb3 commit 950cf4b

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

19_Fallback/readme.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ tags:
2525
1. 接收ETH
2626
2. 处理合约中不存在的函数调用(代理合约proxy contract)
2727

28-
注意⚠️:在Solidity 0.6.x版本之前,语法上只有 `fallback()` 函数,用来接收用户发送的ETH时调用以及在被调用函数签名没有匹配到时,来调用
28+
注意⚠️:在Solidity 0.6.x版本之前,语法上只有 `fallback()` 函数,来处理上面两个场景
2929
0.6版本之后,Solidity才将 `fallback()` 函数拆分成 `receive()``fallback()` 两个函数。
3030

3131
我们这一讲主要讲接收ETH的情况。
@@ -34,7 +34,7 @@ tags:
3434

3535
`receive()`函数是在合约收到`ETH`转账时被调用的函数。一个合约最多有一个`receive()`函数,声明方式与一般函数不一样,不需要`function`关键字:`receive() external payable { ... }``receive()`函数不能有任何的参数,不能返回任何值,必须包含`external``payable`
3636

37-
当合约接收ETH的时候,`receive()`会被触发。`receive()`最好不要执行太多的逻辑因为如果别人用`send``transfer`方法发送`ETH`的话,`gas`会限制在`2300``receive()`太复杂可能会触发`Out of Gas`报错;如果用`call`就可以自定义`gas`执行更复杂的逻辑(这三种发送ETH的方法我们之后会讲到)。
37+
当合约接收ETH的时候,`receive()`会被触发。`receive()`最好不要执行太多的逻辑,因为如果别人用`send``transfer`方法发送`ETH`的话,`gas`会被限制在`2300``receive()`太复杂可能会触发`Out of Gas`报错,进而导致整个交易失败;如果用`call`就可以自定义`gas`执行更复杂的逻辑(这三种发送ETH的方法我们之后会讲到)。
3838

3939
我们可以在`receive()`里发送一个`event`,例如:
4040

@@ -51,9 +51,9 @@ receive() external payable {
5151

5252
## 回退函数 fallback
5353

54-
`fallback()`函数会在调用合约不存在的函数时被触发可用于接收ETH,也可以用于代理合约`proxy contract``fallback()`声明时不需要`function`关键字,必须由`external`修饰,一般也会用`payable`修饰,用于接收ETH:`fallback() external payable { ... }`
54+
`fallback()`函数会在调用合约不存在的函数时被触发可用于接收ETH,也可以用于代理合约`proxy contract``fallback()`声明时不需要`function`关键字,必须由`external`修饰,一般也会用`payable`修饰,用于接收ETH:`fallback() external payable { ... }`
5555

56-
我们定义一个`fallback()`函数,被触发时候会释放`fallbackCalled`事件,并输出`msg.sender``msg.value``msg.data`:
56+
我们定义一个`fallback()`函数,该函数被触发时候会释放`fallbackCalled`事件,并输出`msg.sender``msg.value``msg.data`:
5757

5858
```solidity
5959
event fallbackCalled(address Sender, uint Value, bytes Data);
@@ -105,4 +105,4 @@ receive() fallback()
105105

106106
## 总结
107107

108-
这一讲,我介绍了`Solidity`中的两种特殊函数,`receive()``fallback()`他们主要在两种情况下被使用,处理接收`ETH`和代理合约`proxy contract`
108+
这一讲,我介绍了`Solidity`中的两种特殊函数,`receive()``fallback()`它们主要在两种情况下被使用,处理接收`ETH`和代理合约`proxy contract`

0 commit comments

Comments
 (0)