Skip to content

Commit

Permalink
Merge branch 'AmazingAng:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
AmazingAng authored Nov 5, 2023
2 parents e728a54 + 4a8def7 commit 7d98a48
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 22 deletions.
36 changes: 19 additions & 17 deletions 01_HelloWeb3/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,23 @@ contract HelloWeb3{

1. 第 1 行是注释,说明代码所使用的软件许可(license),这里使用的是 MIT 许可。如果不写许可,编译时会出现警告(warning),但程序仍可运行。Solidity 注释以“//”开头,后面跟注释内容,注释不会被程序执行。

```solidity
// SPDX-License-Identifier: MIT
```
```solidity
// SPDX-License-Identifier: MIT
```

2. 第 2 行声明源文件所使用的 Solidity 版本,因为不同版本的语法有差异。这行代码表示源文件将不允许小于 0.8.4 版本或大于等于 0.9.0 的编译器编译(第二个条件由 `^` 提供)。Solidity 语句以分号(;)结尾。
```solidity
pragma solidity ^0.8.4;
```


```solidity
pragma solidity ^0.8.4;
```

3. 第 3-4 行是合约部分。第 3 行创建合约(contract),并声明合约名为 `HelloWeb3`。第 4 行是合约内容,声明了一个 string(字符串)变量 `_string`,并赋值为 "Hello Web3!"。

```solidity
contract HelloWeb3 {
string public _string = "Hello Web3!";
}
```
```solidity
contract HelloWeb3 {
string public _string = "Hello Web3!";
}
```

后续我们会更详细地介绍 Solidity 中的变量。

Expand All @@ -78,18 +79,19 @@ contract HelloWeb3{

编译完成后,点击左侧菜单的“部署”按钮,进入部署页面。

![](./img/1-2.png)
![Deploy配图](./img/1-2.png)

默认情况下,`Remix` 会使用 `Remix` 虚拟机(以前称为 JavaScript 虚拟机)来模拟以太坊链,运行智能合约,类似在浏览器里运行一条测试链。`Remix` 还会为你分配一些测试账户,每个账户里有 100 ETH(测试代币),随意使用。点击 `Deploy`(黄色按钮),即可部署我们编写的合约。

![](./img/1-3.png)
![_string配图](./img/1-3.png)

部署成功后,在下方会看到名为 `HelloWeb3` 的合约。点击 `_string`,即可看到 "Hello Web3!"。

## 总结

本节课程中,我们简要介绍了 `Solidity``Remix` 工具,并完成了第一个 `Solidity` 程序 —— `HelloWeb3`。接下来,我们将继续深入学习 `Solidity`

### 中文 Solidity 资料推荐:
1. [Solidity中文文档](https://docs.soliditylang.org/zh/v0.8.19/index.html)(官方文档的中文翻译)
### 中文 Solidity 资料推荐

2. [崔棉大师solidity教程](https://space.bilibili.com/286084162) web3技术教学博主,我看他视频学到了很多
1. [Solidity中文文档](https://docs.soliditylang.org/zh/v0.8.19/index.html)(官方文档的中文翻译)
2. [崔棉大师solidity教程](https://space.bilibili.com/286084162) web3技术教学博主,我看他视频学到了很多
4 changes: 2 additions & 2 deletions 03_Function/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Solidity语言的函数非常灵活,可以进行各种复杂操作。在本教
number = number + 1;
}
```
如果 `add()` 函数被标记为 `pure`,比如 `function add() pure external`,就会报错。因为 `pure` 是不配读取合约里的状态变量的,更不配改写。那 `pure` 函数能做些什么?举个例子,你可以给函数传递一个参数 `_number`,然后让他返回 `_number + 1`,这个操作不会读取或写入状态变量。
如果 `add()` 函数被标记为 `pure`,比如 `function add() external pure`,就会报错。因为 `pure` 是不配读取合约里的状态变量的,更不配改写。那 `pure` 函数能做些什么?举个例子,你可以给函数传递一个参数 `_number`,然后让他返回 `_number + 1`,这个操作不会读取或写入状态变量。
```solidity
// pure:
function addPure(uint256 _number) external pure returns(uint256 new_number){
Expand All @@ -105,7 +105,7 @@ Solidity语言的函数非常灵活,可以进行各种复杂操作。在本教

![3-3.png](./img/3-3.png)

如果 `add()` 函数被标记为 `view`,比如 `function add() view external`,也会报错。因为 `view` 能读取,但不能够改写状态变量。我们可以稍微改写下函数,读取但是不改写 `number`,返回一个新的变量。
如果 `add()` 函数被标记为 `view`,比如 `function add() external view`,也会报错。因为 `view` 能读取,但不能够改写状态变量。我们可以稍微改写下函数,读取但是不改写 `number`,返回一个新的变量。
```solidity
// view: 看客
function addView() external view returns(uint256 new_number) {
Expand Down
2 changes: 1 addition & 1 deletion 35_DutchAuction/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ contract DutchAuction is Ownable, ERC721 {
2. 荷兰拍卖:随后,可以通过`getAuctionPrice()`函数获取到**当前**的拍卖价格。可以观察到,拍卖开始前的价格为`起拍价 AUCTION_START_PRICE`随着拍卖进行,拍卖价格在逐渐降低,直到降低至`地板价 AUCTION_END_PRICE`后不再变化。
![荷兰拍卖价格变化](./img/35-3.png)

3. Mint操作:通过`auctionMin()`函数,完成mint,可以看见本例中,由于时间已经超过拍卖时间,因此仅耗费了`地板价`就完成了拍卖。
3. Mint操作:通过`auctionMint()`函数,完成mint,可以看见本例中,由于时间已经超过拍卖时间,因此仅耗费了`地板价`就完成了拍卖。
![完成荷兰拍卖](./img/35-4.png)

4. 提取`ETH`:直接通过`withdrawMoney()`函数,便能将筹集到的`ETH`通过`call()`发送到合约创建者的地址。
Expand Down
4 changes: 2 additions & 2 deletions 37_Signature/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ tags:

1. **身份认证**:证明签名方是私钥的持有人。
2. **不可否认**:发送方不能否认发送过这个消息。
3. **完整性**消息在传输过程中无法被修改
3. **完整性**通过验证针对传输消息生成的数字签名,可以验证消息是否在传输过程中被篡改

## `ECDSA`合约

Expand Down Expand Up @@ -76,7 +76,7 @@ tags:
* 以及`EIP191`:https://eips.ethereum.org/EIPS/eip-191`
* 添加"\x19Ethereum Signed Message:\n32"字段,防止签名的是可执行交易。
*/
function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
function toEthSignedMessageHash(bytes32 hash) public pure returns (bytes32) {
// 哈希的长度为32
return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
}
Expand Down

0 comments on commit 7d98a48

Please sign in to comment.